Erinnern Sie sich noch an die Windows-Spiele, die wir damals gespielt haben? Apropos Spiele, die mit Windows geliefert werden: Ich glaube, viele Freunde, die in den 80er und 90er Jahren geboren wurden, kennen sie. In den frühen Tagen, als Spiele unfruchtbar waren, haben uns Spiele wie „Solitaire“ und „Minesweeper“ dabei geholfen, viel Freude in unseren Mikrocomputerunterricht zu bringen.
Glückliche Zeit. Aber unter diesen Spielen gibt es ein Spiel, das nicht viele Leute zu verstehen scheinen oder nicht einmal wissen, wie man es spielt. dieses Spiel
Es sind Herzen.
Nachdem der Herausgeber es kürzlich aus einer Laune heraus sorgfältig studiert hatte, stellte ich fest, dass dieses Spiel tatsächlich mehr Spaß macht als andere Spiele.
Manche. Denn das Gameplay dieses Spiels lässt sich einfach in zwei Worten zusammenfassen: „Betrug“ , und es ist die Art von Spiel, bei der es sich offensichtlich um Betrug handelt.
1. Öffnen Sie das Spiel: Doppelklicken Sie auf hongxindazhan.py und das Hauptprogramm wird ausgeführt!
2. Starten Sie das Spiel: Geben Sie den Namen des Spielers ein, erstellen Sie eine neue ID und klicken Sie auf Bestätigen, um das Spiel zu betreten.
3. Spielablauf:
1) Karten wechseln: Wählen Sie drei Karten in Ihrer Hand aus und klicken Sie auf die Schaltfläche oben, um den Austausch abzuschließen. 2) Karten ausspielen: Wenn der Spieler an der Reihe ist, Karten auszuspielen, wählen Sie die Karten in Ihrer Hand aus und klicken Sie, um sie auszuspielen. (Spezifische Kartenspielregeln finden Sie im Anhang.) Hinweis: Wenn diese Karte zu diesem Zeitpunkt nicht gespielt werden kann, wird in der Eingabeaufforderungsleiste unten der Grund angezeigt, warum sie nicht gespielt werden kann.
4. Systematisch in Phasen unterteilt: Nach einer Spielrunde wird die Punktetabelle angezeigt, in der die Punkte und die Gesamtpunktzahl jeder Runde für den Spieler und die drei Computer angezeigt werden
Der aktuelle Rang des Spielers. (Spezifische Regeln zur Bestimmung von Sieg oder Niederlage finden Sie im Anhang.)
5. Menüleiste:
1) Spielleiste: Neues Spiel (F2): Klicken Sie hier, um ein neues Spiel zu starten. Punktestand (F4): Klicken Sie hier, um die Punktetabelle anzuzeigen. Hintergrundmusik: Klicken Sie, um den Musikschalter umzuschalten. Option (F5): Klicken Sie hier, um die Spielgeschwindigkeit des Computers zu ändern. Beenden: Klicken Sie hier, um das Spiel zu beenden. 2) Hilfeleiste: Regeleinführung (F1): Klicken Sie hier, um kurze Regeln und Gewinnbedingungen anzuzeigen. Zitat: Klicken Sie hier, um ein berühmtes Zitat anzuzeigen.
6. Hintergrundmusik: Ersetzen: Sie können Ihre eigene Musik im WAV-Format verwenden, um sie in „m1.wav“ umzubenennen und die Datei mit demselben Namen im Programmverzeichnis zu ersetzen.
1. Bevor Sie das Spiel spielen, müssen Sie sich für den Dealer entscheiden. Am Computer sitzt der Bankier im Süden. 2. Nachdem der Dealer eine Hand voller Karten (insgesamt 13 Karten) erhalten hat, muss er zunächst drei Karten auswählen und sie an andere Gegner weitergeben. In der ersten Runde werden die Karten an den Spieler auf der linken Seite weitergegeben; in der zweiten Runde werden die Karten an den Spieler auf der rechten Seite weitergegeben; Runde, es werden keine Karten weitergegeben und so weiter. Nachdem Sie den Pass vom Dealer erhalten haben, müssen Sie auch drei Karten nach Belieben an den Dealer zurückgeben. Wenn Sie am Computer eine Karte auswählen möchten, klicken Sie einfach auf die entsprechende Karte. Um die Auswahl einer Karte aufzuheben, klicken Sie erneut. 3. Der Spieler, der die Kreuz-2 fängt, muss zuerst die Kreuz-2 spielen, was den ersten Angriff darstellt. 4. Anschließend werden die Karten im Uhrzeigersinn ausgespielt. Jeder Spieler muss der Reihe nach Karten derselben Farbe ziehen. Wenn keine Karten derselben Farbe wie die ausgeteilte Karte vorhanden sind, kann jede Karte gespielt werden. Die einzige Ausnahme besteht darin, dass in der ersten Runde kein Herz oder eine Pik-Dame (allgemein als „Schwein“ bekannt) gespielt werden kann. Hinweis: Die höchste Karte unter den gespielten Karten derselben Farbe gewinnt diese Runde, und der Spieler, der die Karte gewinnt, spielt die Karte in der nächsten Runde zuerst aus. Erst nachdem die Herzen zuvor gespielt wurden, können die Herzen gezogen werden (es sei denn, es befinden sich nur Karten einer Farbe auf der Hand, Herzen). 5. Am Ende jeder Spielrunde ist jedes rote Herz 1 Punkt wert und die „Pik-Dame (Schwein)“ ist 13 Punkte wert. Das Spiel wird fortgesetzt, bis jemand 100 Punkte oder mehr erreicht oder der Dealer das Spiel verlässt. Wenn in einer Runde alle Herzen und die „Pik-Dame“ gewonnen werden („Catch“ genannt), erhält der „Catch“-Spieler null Punkte und die verbleibenden Spieler jeweils 26 Punkte. Je niedriger die Punktzahl, desto besser für dieses Spiel.
▲Umgebungsinstallation Die in diesem Artikel verwendete Laufumgebung: Python3.7, Pycharm Community Edition 2020, Tkinter-Modul, Teil
Das eingebaute Modul kann ohne Installation direkt importiert werden. (Wenn Sie Software installieren oder Codes aktivieren müssen oder auf Probleme stoßen, können Sie mir eine private Nachricht senden
Ha! ) Modulinstallation: pip install -i
https://pypi.douban.com/simple/ + Modulname
Der originellste grüne Hintergrund. (Es wird nur der Hintergrund gezeigt, die restlichen Bilder werden nicht angezeigt) Als Referenz dient das zweite Bild oben
Es wird nur der Hauptquellcode des Programms angezeigt. Jede Codezeile ist kommentiert, sodass sie direkt angezeigt werden kann! Den gesamten Quellcode finden Sie am Ende des Artikels!
aus Tkinter-Import * aus tkFont-Import * Winsound importieren aus tkMessageBox-Import * aus innerem Import * aus Dialog-Import * #Erstellung der Hauptschnittstelle des Spiels classGameFrame:def__init__(self,game,bgimg):#game, Game class object; bgimg, Hintergrundbild self; .master = game.root #Erstelle eine Leinwand und zeichne den Hintergrund self.c = Canvas(self.master,width = 1024,height = 640) self.c.create_image(514,322,image=bgimg) self.c.pack( ) # Statusleiste erstellen self.status = Label(self.master,text="Willkommen im Heart War!", bd=1,relief=SUNKEN,anchor=W) self.status.pack(fill = X) # Öffnen Sie das Startdialogfeld startdialog = StartDialog(self.master,"Hearts") ifstartdialog.isCancel:game.cancel() else:self.gamemodetext = ['Pass to the left', 'Pass to the right', 'Cross- change'] self.name = [startdialog.name,'West','North','East'] self.handXY = [[346.5,490,1,0],[20,135,0,1], [586.5, 20,-1,0 ],[913,375,0,-1]] self.nameXY = [[-20,130,SE],[0,-20,SW],[91+20,0,NW],[91,130 +20,NE]] self.middleXY = [[466.5,330],[411,255],[466.5,180],[522,255]] self.img = 53* [''] fori inrange(52): self.img [i] = PhotoImage( file = 'card\%s.pgm'% (i)) self.img[52] = PhotoImage(file = 'back.pgm') self.scorelist = [] self.cards = [ ] self.gamemode = 0self .speed = 100self.wait = self.speed self.isChanging = False self.iswait = False #Draw the name fori inrange(4): self.c.create_text(self.handXY[i][0 ]+self.nameXY[i ][0], self.handXY[i][1]+self.nameXY[i][1], fill = 'white', text = self.name[i], Anchor = self .nameXY[i][2 ], font = Font(size=15,weight="bold")) #Erstelle eine Hand self.l = 52* [''] fori inrange(52): self.l[i] = Label(self.master, image=self.img[52],bd = -1) fori inrange(13): self.l[i]['text'] = str(i) self.l[i]. bind("<Button-1 >",self.cardEvent) #Erstelle die zentrale Karte self.ml = 4* [''] fori inrange(4): self.ml[i] = Label(self.master,image= self.img[52],bd = -1) self.b = Button(self.master,width=15,command=self.buttonEvent) #Eine Spielrunde beginnt self.oneGameStart() defoneGameStart(self): #Erstellen Onegame-Objekt zum Abrufen von Karteninformationen self.onegame = OneGame() #Holen Sie sich die Hand des Spielers und zeigen Sie die Hand an = self.onegame.getPlayerHand(0) fori inrange(13): self.l[i]['image'] = self .img[hand[i] .id] fori inrange(4): forj inrange(13): self.moveCard(i,j,0) #Betreten Sie die Kartenwechselphase, wenn der Spielmodus 0, 1, 2 ifself ist. gamemode != 3: self.changeHands( ) else: self.onegame.changeCards([],3) self.isChanging = False self.leftCards = 13#Betritt die Kartenspielphase, der Computer vor dem Spieler spielt selbst Karten .playpreCards() defchangeHands(self): #Kartenphase ändern Entsprechende Initialisierung self.select = []#Ausgewählte Karten self.isChanging = True self.isOK = False s = [1,3,2] self.status['text' ] = 'Bitte wählen Sie drei Karten zum Passen aus' +self.name[s[self.gamemode]]+'. '#Die Eingabeaufforderungsschaltfläche zeigt self.b['text'] = self.gamemodetext[self.gamemode] self.b.place(x = 460,y = 400) self.b['state'] = DISABLED defcardEvent(self , Ereignis): #Ereignis der Karte #Ermitteln Sie die Position der Karte i = int(event.widget['text']) ifnotself.isChanging: #Kartenereignis in der Kartenspielphase #Während des Wartens auf sich selbst wird keine Karte gespielt. iswait:return#Kann nicht gespielt werden. Die Karte wird nicht gespielt. ifnotself.onegame.available(i): self.status['text'] = self.onegame.errorString returnself.onegame.playCard(i) #Die gespielte Karte wird angezeigt in das Zentrum event.widget.place_forget() self .ml[self.turn]['image'] = event.widget['image'] self.ml[self.turn].place(x = self.middleXY[0] [0],y = self.middleXY[ 0][1]) self.turn += 1self.leftCards -= 1#Der Computer hinter dem Spieler spielt Karten self.iswait = True self.playlaterCards() self.status[' text'] = 'Waiting...'self .wait += 500+ 5* self.speed #Nach einer gewissen Wartezeit wird die zentrale Karte gelöscht und der Computer vor dem Spieler spielt die Karte selbst aus. master.after(self.wait,self.playpreCards) self.wait = self.speed else: #Kartenereignisse in der Kartenwechselphase, heruntergesprungen, fallen gelassen, zurückgesprungen ifnotself.isOK:ifi inself.select:self.select.remove( i) self.moveCard(0,i,0) self.b['state '] = DISABLED else:iflen(self.select) < 3: self.select.append(i) self.moveCard(0,i,1 ) iflen(self.select) == 3: self.b['state' ] = NORMAL defbuttonEvent(self): #Prompt button event ifnotself.isOK: #Lassen Sie die Karten vom Computer wechseln, bevor Sie die Karten für den Austausch selbst wechseln. select = self.onegame.changeCards(self.select,self.gamemode) hand = self.onegame .getPlayerHand(0) für inrange(13): self.l[i]['image'] = self.img[hand[ i].id] self.moveCard(0,i,0) fori inself.select:self .moveCard(0,i,1) self.status['text'] = ' Bitte drücken Sie „OK“, um die übergebene Karte zu akzeptieren . 'self.b['text'] = 'OK' self.isOK = True else: #Bestätigen Sie nach dem Kartenwechsel, betreten Sie die Kartenspielphase, der Computer vor dem Spieler spielt die Karten für sich selbst.select:self. moveCard(0,i ,0) self.b.place_forget() self.isChanging = False self.leftCards = 13self.playpreCards() defplaypreCards(self): ifself.leftCards == 0: #Nachdem die Karten gespielt wurden, erfolgt die Wertung wird aggregiert und das Punktedialogfeld wird angezeigt füri inrange (4): hand = self.onegame.p[i].scoreHand forj inrange(len(hand)): self.l[i*13+j][' image'] = self.img[hand[j]. id] self.moveCard(i,j,0) score = self.onegame.getScore() self.scorelist.append(score) iflen(self.scorelist) != 1: fori inrange(4): self.scorelist[- 1][i] += self.scorelist[-2][i] self.status['text'] = 'Score'scoredialog = self.showScoreDialog() # Initialisieren Sie, nachdem die Punktzahl bestätigt wurde, und starten Sie eine neue Runde des Spiels ifscoredialog.isover :self.scorelist = [] self.gamemode = 0else:self.gamemode = (self.gamemode + 1) % 4fori inrange(52): self. l[i].place_forget() self.l[i]['image '] = self.img[52] fori inrange(4): self.ml[i].place_forget() self.oneGameStart() else: # Holen Sie sich die vorherige Computerkarte des Spielers und zeigen Sie sie an füri inrange(4): self .ml[i].place_forget() self.turn = 0preCards = self.onegame.preCard iflen(preCards) == 0: self.end() else :fori inrange(len(preCards)): p,j = preCards[ i][0],preCards[i][1] self.cards.append([self.turn,p,j]) self.master.after (self.wait,self.showMiddleCard) ifp == 3: self.master.after(self.wait,self.end) self.wait = self.speed else:self.wait += self.speed self.turn += 1defplaylaterCards(self): #Holen Sie sich die Computerkarten des Spielers und zeigen Sie sie an laterCards = self.onegame.laterCard fori inrange(len(laterCards)): p,j = laterCards[i][0],laterCards[i][1] self .cards.append([self.turn,p,j] ) self.master.after(self.wait,self.showMiddleCard) self.wait += self.speed self.turn += 1defmoveCard(self,i,j, state):#i, Spieler; j, welche Karte ;state, hüpfen oder ablegen # Kartenbewegung self.l[i*13+j].place_forget() x0= self.handXY[i][0] + self. handXY[i][2]*j*20y0 = self.handXY[i][1] + self.handXY[i][3]*j*20self.l[i*13+j].place(x = x0 ,y = y0- state * 20) defnewGame( self): #Neues Spiel self.scorelist = [] self.gamemode = 0fori inrange(52): self.l[i].place_forget() self.l[i][ 'image'] = self.img[52] fori inrange(4): self.ml[i].place_forget() self.oneGameStart() defshowScoreDialog(self): #Score-Dialog anzeigenScoredialog = ScoreDialog(self.master,self .scorelist,self.name) returnscoredialog defshowMiddleCard( self): #Zentrale Kartenanzeige i = self.cards[0][0] p = self.cards[0][1] j = self.cards[0][2] del self.cards[0] self.l [p*13+j].place_forget() hand = self.onegame.getPlayerHand(p) self.ml[i]['image'] = self.img[hand[j ].id] self.ml[i] .place(x = self.middleXY[p][0], y = self.middleXY[p][1]) defensive(self): #Umschalten, wenn der Computer mit der Wiedergabe fertig ist Karten, wenn der Spieler Karten spielt self.iswait = False self status['text'] = 'Bitte spielen Sie eine Karte. '#Erstellen Sie ein Spielfenster und erstellen Sie einen Spielmenüpunkt classGame:def__init__(self): #Erstellen Sie ein Root-Fenster und setzen Sie self.root = Tk() self.root.title("Hearts") self.root.geometry(' + 150+10') self.root.resizable(False, False) #Hintergrundmusik abspielen self.s = winsound.PlaySound('m1.wav', winsound.SND_ASYNC+winsound.SND_LOOP) #Menü erstellen m = Menu(self . root) self.root['menu'] = m gamemenu = Menu(m) helpmenu = Menu(m) m.add_cascade(label = 'Game',menu = gamemenu) m.add_cascade(label = 'Help',menu = helpmenu) gamemenu.add_command(label="Neues Spiel F2",command = self.gameEvent1) gamemenu.add_separator() gamemenu.add_command(label="Score... F4",command = self.gameEvent2) gamemenu.add_command( label = „Option... F5“, command = self.gameEvent4) self.v = IntVar() self.v.set(1) gamemenu.add_checkbutton(label = „Hintergrundmusik“, variable = self.v, command = self .gameEvent3) gamemenu.add_separator() gamemenu.add_command(label="Exit",command = self.cancel) helpmenu.add_command(label="Einführung in die Regeln... F1",command = self.helpEvent1) helpmenu.add_command (label ="Quotation...",command = self.helpEvent2) self.root.bind('<F2>',self.gameEvent1) self.root.bind('<F4>',self.gameEvent2) self. root. bind('<F5>',self.gameEvent4) self.root.bind('<F1>',self.helpEvent1) self.root.protocol("WM_DELETE_WINDOW",self.cancel) #Hintergrundbild importieren bgimg = PhotoImage( file = 'bg.gif') #Erstellen Sie die Hauptschnittstelle self.frame = GameFrame(self,bgimg) #Hauptschleife self.root.mainloop() defgameEvent1(self,event=None): #Spielmenüpunkt „Neu Spiel" flag = askokcancel('Neues Spiel', 'Sind Sie sicher, dass Sie das aktuelle Spiel abbrechen und ein neues starten möchten? ') ifflag:self.frame.newGame() defgameEvent2(self,event=None): #Spielmenüpunkt „Score“ self.frame.showScoreDialog() defgameEvent3(self): #Spielmenüpunkt „Hintergrundmusik“ ifself.v .get() == 0: winsound.PlaySound(self.s,winsound.SND_PURGE) else:self.s = winsound.PlaySound('m1.wav', winsound.SND_ASYNC+winsound.SND_LOOP) defgameEvent4(self,event= Keine): #Spielmenüpunkt „Option“ optionDialog = OptionDialog(self.root,self.frame.speed / 100- 1) ifnotoptionDialog.isCancel:self.frame.speed = 100+ optionDialog.v.get() * 100defhelpEvent1( self, event=None): #Hilfe-Menüelement“ Regeleinführung „HelpDialog(self.root) defhelpEvent2(self): #Hilfe-Menüelement“ berühmtes Sprichwort „SayDialog(self.root) defcancel(self): #Schalten Sie die Musik aus und beende das Spiel winsound.PlaySound(self.s,winsound.SND_PURGE) self.root.destroy() defmain(): Game() if__name__== '__main__': main()
Die Technologie verändert sich mit jedem Tag. Die „großen Bausteine“ des Desktops haben sich im Handumdrehen in tragbare Tablets verwandelt. Menschen, die diese integrierten Spiele damals heimlich gespielt haben
Egal, ob Sie eine neue Person am Arbeitsplatz werden oder Eltern werden, sie alle haben ihre eigenen neuen Etappen begonnen, und auch diese Spiele haben ihre Missionen erfüllt!
Welches Spiel war dein Lieblingsspiel, als du ein Teenager warst? Übrigens habe ich schon über viele Spiele geschrieben. Wenn Sie den Quellcode benötigen, denken Sie daran, ihn von mir zu erhalten!