Vous souvenez-vous encore des jeux Windows auxquels nous jouions dans ces années-là ? En parlant des jeux fournis avec Windows, je pense que de nombreux amis nés dans les années 80 et 90 les connaissent. Au début, lorsque les jeux étaient stériles, des jeux tels que "Solitaire" et "Démineur" nous ont aidés à apporter beaucoup de joie dans nos cours de micro-informatique.
Bon moment. Mais parmi ces jeux, il y en a un que peu de gens semblent comprendre, ou même savoir jouer. ce jeu
C'est des coeurs.
Récemment, après que l'éditeur l'ait soigneusement étudié sur un coup de tête, j'ai découvert que ce jeu était effectivement plus agréable à jouer que d'autres jeux.
Quelques. Car le gameplay de ce jeu peut se résumer simplement en deux mots : « tricher » , et c'est le genre de jeu qui est évidemment de la triche.
1. Ouvrez le jeu : double-cliquez sur hongxindazhan.py et le programme principal s'exécutera !
2. Démarrez le jeu : saisissez le nom du joueur, créez un nouvel identifiant et cliquez sur Confirmer pour entrer dans le jeu.
3. Déroulement du jeu :
1) Changer de carte : Sélectionnez trois cartes dans votre main et cliquez sur le bouton ci-dessus pour terminer l'échange ; 2) Jouer des cartes : Lorsque c'est au tour du joueur de jouer des cartes, sélectionnez les cartes dans votre main et cliquez pour les jouer. (Voir l'annexe pour les règles spécifiques de jeu de cartes) Remarque : Lorsque cette carte ne peut pas être jouée à ce moment-là, la barre d'invite ci-dessous affichera la raison pour laquelle elle ne peut pas être jouée.
4. Systématiquement divisé en étapes : après un tour de jeu, le tableau des scores apparaîtra, indiquant les points et le total des points de chaque tour pour le joueur et les trois ordinateurs, et
Le classement actuel du joueur. (Voir l'annexe pour les règles spécifiques permettant de déterminer la victoire ou la défaite)
5. Barre de menus :
1) Barre de jeu : Nouvelle partie (F2) : Cliquez pour démarrer une nouvelle partie. Score (F4) : Cliquez pour afficher le tableau des scores. Musique de fond : cliquez pour changer le commutateur de musique. Option (F5) : Cliquez pour modifier la vitesse de lecture de l'ordinateur. Quitter : cliquez pour quitter le jeu. 2) Barre d'aide : Introduction aux règles (F1) : Cliquez pour afficher de brèves règles et les conditions gagnantes. Citation : Cliquez pour faire apparaître une citation célèbre.
6. Musique de fond : Remplacement : Vous pouvez utiliser votre propre musique au format wav pour la renommer en « m1.wav » afin de remplacer le fichier du même nom dans le répertoire du programme.
1. Avant de jouer au jeu, vous devez choisir le croupier. Sur l'ordinateur, le banquier est assis au sud. 2. Après avoir obtenu une main de cartes (13 cartes au total), le croupier doit d'abord sélectionner trois cartes et les passer aux autres adversaires. Au premier tour, les cartes sont passées au joueur de gauche ; au deuxième tour, les cartes sont passées au joueur de droite ; au troisième tour, les cartes sont passées au joueur assis en face du quatrième ; tour, aucune carte n'est passée, et ainsi de suite. Après avoir reçu le laissez-passer du croupier, vous devez également rendre à volonté trois cartes au croupier. Sur l'ordinateur, si vous souhaitez sélectionner une carte, il suffit de cliquer sur la carte correspondante. Pour désélectionner une carte, cliquez à nouveau. 3. Le joueur qui attrape le 2 de trèfle doit jouer le 2 de trèfle en premier, ce qui constitue la première attaque. 4. Jouez ensuite les cartes dans le sens des aiguilles d’une montre. Chaque joueur doit à son tour piocher des cartes de la même couleur. S'il n'y a pas de carte de la même couleur que la carte distribuée, n'importe quelle carte peut être jouée. La seule exception est qu'un Cœur ou une Dame de Pique (communément appelés « Cochon ») ne peuvent pas être joués au premier tour. Remarque : La carte la plus haute parmi les cartes de la même couleur jouée remportera ce tour, et le joueur qui remporte la carte jouera la carte en premier au tour suivant. Ce n'est qu'après que les cœurs ont été joués auparavant que les cœurs peuvent être retirés (à moins qu'il n'y ait que des cartes d'une même couleur dans la main, les cœurs). 5. À la fin de chaque tour de jeu, chaque cœur rouge vaut 1 point, et la « Reine de pique (Cochon) » vaut 13 points. Le jeu continuera jusqu'à ce que quelqu'un marque 100 points ou plus ou que le croupier quitte le jeu. Si tous les cœurs et la « Dame de pique » sont gagnés au cours d'un tour (appelé « catch »), le joueur « catch » obtient zéro point et les joueurs restants reçoivent chacun 26 points. Plus le score est bas, mieux c'est pour ce jeu.
▲Installation de l'environnement L'environnement d'exécution utilisé dans cet article : Python3.7, Pycharm Community Edition 2020, module tkinter, partie
Le module intégré peut être importé directement sans installation. (Si vous devez installer un logiciel, activer des codes ou rencontrer des problèmes, vous pouvez m'envoyer un message privé
Ha! ) Installation du module : pip install -i
https://pypi.douban.com/simple/ + nom du module
Le fond vert le plus original. (Seul l'arrière-plan est affiché, le reste des images ne sont pas affichés) La référence est la deuxième image en haut
Seul le code source du programme principal est affiché. Chaque ligne de code est commentée afin de pouvoir être affichée directement ! Voir l'intégralité du code source à la fin de l'article !
depuis l'importation Tkinter * depuis l'importation tkFont * importer winsound depuis l'importation tkMessageBox * depuis l'importation interne * depuis l'importation de la boîte de dialogue * #Classe de création de l'interface principale du jeuGameFrame:def__init__(self,game,bgimg):#game, objet de classe de jeu bgimg, image d'arrière-plan self; .master = game.root #Créez un canevas et dessinez l'arrière-plan self.c = Canvas(self.master,width = 1024,height = 640) self.c.create_image(514,322,image=bgimg) self.c.pack( ) # Créer une barre d'état self.status = Label(self.master,text="Bienvenue dans la guerre du cœur !", bd=1,relief=SUNKEN,anchor=W) self.status.pack(fill = X) # Ouvrez la boîte de dialogue de démarrage startdialog = StartDialog(self.master,"Hearts") ifstartdialog.isCancel:game.cancel() else:self.gamemodetext = ['Passez à gauche', 'Passez à droite', '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* [''] pour inrange(52) : self.img [i] = PhotoImage( fichier = '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 #Dessinez le nom de i 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")) #Créer une main 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) #Créer la carte centrale self.ml = 4* [''] pour inrange(4): self.ml[i] = Label(self.master,image= self.img[52],bd = -1) self.b = Button(self.master,width=15,command=self.buttonEvent) #Une partie de jeu commence self.oneGameStart() defoneGameStart(self): #Create Objet Onegame pour obtenir les informations de la carte self.onegame = OneGame() #Obtenir la main du joueur et afficher la main = 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) #Entrez dans l'étape de changement de carte lorsque le mode de jeu est 0, 1, 2 siself. gamemode != 3: self.changeHands( ) else: self.onegame.changeCards([],3) self.isChanging = False self.leftCards = 13#Entrez dans la phase de jeu de cartes, l'ordinateur devant le joueur joue lui-même les cartes .playpreCards() defchangeHands(self): #Changer la phase de la carte Initialisation correspondante self.select = []#Cartes sélectionnées self.isChanging = True self.isOK = False s = [1,3,2] self.status['text' ] = 'Veuillez sélectionner trois cartes à passer' +self.name[s[self.gamemode]]+'. '#Le bouton d'invite affiche self.b['text'] = self.gamemodetext[self.gamemode] self.b.place(x = 460,y = 400) self.b['state'] = DISABLED defcardEvent(self , event): #Événement de la carte #Obtenir la position de la carte i = int(event.widget['text']) ifnotself.isChanging: #Événement de carte en phase de jeu de carte #Aucune carte ne sera jouée en attendant siself. iswait:return#Cannot be play La carte n'est pas jouée ifnotself.onegame.available(i): self.status['text'] = self.onegame.errorString returnself.onegame.playCard(i) #La carte jouée est affichée dans le centre 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#L'ordinateur derrière le joueur joue aux cartes self.iswait = True self.playlaterCards() self.status[' text'] = 'Waiting...'self .wait += 500+ 5* self.speed #Après un certain temps d'attente, la carte centrale est effacée et l'ordinateur devant le joueur joue la carte lui-même. master.after(self.wait,self.playpreCards) self.wait = self.speed else: #Événements de carte en phase de changement de carte, rebondi, abandonné rebondi ifnotself.isOK:ifi inself.select:self.select.remove( i) self.moveCard(0,i,0) self.b['state '] = DÉSACTIVÉ else:iflen(self.select) < 3 : self.select.append(i) self.moveCard(0,i,1 ) iflen(self.select) == 3: self.b['state' ] = NORMAL defbuttonEvent(self): #Événement du bouton d'invite ifnotself.isOK: #Obtenez les cartes modifiées par l'ordinateur avant de changer les cartes pour les échanger vous-même. select = self.onegame.changeCards(self.select,self.gamemode) hand = self.onegame .getPlayerHand(0) pour 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'] = ' Veuillez appuyer sur "OK" pour accepter la carte transmise . 'self.b['text'] = 'OK' self.isOK = True else: #Confirmez après avoir changé les cartes, entrez dans l'étape de jeu de cartes, l'ordinateur devant le joueur joue les cartes pour lui-même.select:self. moveCard(0,i ,0) self.b.place_forget() self.isChanging = False self.leftCards = 13self.playpreCards() defplaypreCards(self): ifself.leftCards == 0: #Une fois les cartes jouées, les scores sera agrégé et la boîte de dialogue de score sera affichée pouri 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() # Initialisez une fois le score confirmé et démarrez un nouveau tour de jeu 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 : # Récupérez la carte d'ordinateur précédente du joueur et affichez-la fori 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): #Récupérez les cartes informatiques du joueur et affichez-les plus tardCards = 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, joueur; j, quelle carte ;état, rebondit ou pose # mouvement de la carte 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): #Nouveau jeu 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): #Afficher la boîte de dialogue de score scoredialog = ScoreDialog(self.master,self .scorelist,self.name) returncoredialog defshowMiddleCard( self): #Affichage central de la carte 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]) defense(self): #Basculement à partir de la fin de la lecture de l'ordinateur cartes lorsque le joueur joue des cartes self.iswait = False self status['text'] = 'Veuillez jouer une carte. '#Créez une fenêtre de jeu et créez un élément de menu de jeu classGame:def__init__(self): #Créez une fenêtre racine et définissez self.root = Tk() self.root.title("Hearts") self.root.geometry(' + 150+10') self.root.resizing(False, False) #Jouer de la musique de fond self.s = winsound.PlaySound('m1.wav', winsound.SND_ASYNC+winsound.SND_LOOP) #Créer un menu m = Menu(self . root) self.root['menu'] = m gamemenu = Menu(m) helpmenu = Menu(m) m.add_cascade(label = 'Jeu',menu = gamemenu) m.add_cascade(label = 'Aide',menu = helpmenu) gamemenu.add_command(label="Nouveau jeu 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="Musique de fond", variable = self.v, command = self .gameEvent3) gamemenu.add_separator() gamemenu.add_command(label="Exit",command = self.cancel) helpmenu.add_command(label="Introduction aux règles... F1",command = self.helpEvent1) helpmenu.add_command (étiquette ="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) #Importer l'image d'arrière-plan bgimg = PhotoImage( file = 'bg.gif') #Créer l'interface principale self.frame = GameFrame(self,bgimg) #Boucle principale self.root.mainloop() defgameEvent1(self,event=None): #Élément du menu Jeu "Nouveau Game" flag = Askokcancel('New Game', 'Etes-vous sûr de vouloir abandonner la partie en cours et en commencer une nouvelle ? ') ifflag:self.frame.newGame() defgameEvent2(self,event=None): #Élément de menu du jeu "Score" self.frame.showScoreDialog() defgameEvent3(self): #Élément de menu du jeu "Musique de fond" 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= Aucun) : #Élément de menu du jeu "option" optionDialog = OptionDialog(self.root,self.frame.speed / 100- 1) ifnotoptionDialog.isCancel:self.frame.speed = 100+ optionDialog.v.get() * 100defhelpEvent1( self, event=None): #Élément de menu d'aide" introduction à la règle "HelpDialog(self.root) defhelpEvent2(self): #Élément de menu d'aide" dicton célèbre "SayDialog(self.root) defcancel(self): #Éteignez la musique et quittez le jeu winsound.PlaySound(self.s,winsound.SND_PURGE) self.root.destroy() defmain(): Game() if__name__== '__main__': main()
La technologie évolue chaque jour. Les « grosses briques » d’ordinateur de bureau se sont transformées en un instant en tablettes portables. Les gens qui jouaient secrètement à ces jeux intégrés à l’époque.
Qu'ils soient devenus une nouvelle personne sur le lieu de travail ou qu'ils soient devenus parents, ils ont tous entamé leur propre nouvelle étape, et ces jeux ont également rempli leur mission !
Quel jeu préfériez-vous lorsque vous étiez adolescent ? D'ailleurs, j'ai déjà écrit sur de nombreux jeux. Si vous avez besoin du code source, n'oubliez pas de l'obtenir auprès de moi !