python实现2048小游戏
2048的python实现。修改自某网友的代码,解决了原网友版本的两个小bug:
1. 原版游戏每次只消除一次,而不是递归消除。如 [2 ,2 ,2 ,2] 左移动的话应该是 [4, 4, 0, 0] , 而不是[8 , 0 , 0 ,0]
2. 对游戏结束的侦测有bug,已经改正。
2048game.py
# -*- coding: utf-8 -*- """ Created on Tue Jul 1 14:15:39 2014 @author: kelvin """ import random class game2048: totalScore = 0 v = [[2, 8, 8, 2], [4, 2, 4, 8], [2, 4, 2, 0], [4, 2, 4, 0]] ''' v = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] ''' def __init__(self): for i in range(4): self.v[i] = [random.choice([0,0,0,2,2,4]) for x in range(4)] def display(self): print('{0:4} {1:4} {2:4} {3:4}'.format(self.v[0][0], self.v[0][1], self.v[0][2], self.v[0][3])) print('{0:4} {1:4} {2:4} {3:4}'.format(self.v[1][0], self.v[1][1], self.v[1][2], self.v[1][3])) print('{0:4} {1:4} {2:4} {3:4}'.format(self.v[2][0], self.v[2][1], self.v[2][2], self.v[2][3])) print('{0:4} {1:4} {2:4} {3:4}'.format(self.v[3][0], self.v[3][1], self.v[3][2], self.v[3][3])) print('得分为:{0:4}'.format(self.totalScore)) print('游戏是否结束:{0:4}'.format(self.isOver())) #重新排列 def align(self,vList, direction): for i in range(vList.count(0)): vList.remove(0) zeros = [0 for x in range(4-len(vList))] if direction == 'left': vList.extend(zeros) else: vList[:0] = zeros #将相同的元素相加,返回新增积分 def addSame(self,vList, direction): increment=0 if direction == 'left': for i in [0,1,2]: if vList[i]==vList[i+1] and vList[i+1]!=0: vList[i] *= 2 vList[i+1] = 0 increment += vList[i] else: for i in [3,2,1]: if vList[i]==vList[i-1] and vList[i-1]!=0: vList[i] *= 2 vList[i-1] = 0 increment += vList[i] return increment #处理行和方向,返回新增积分 def handle(self, vList, direction): self.align(vList, direction) increment = self.addSame(vList, direction) self.align(vList, direction) self.totalScore += increment #直接加到总值 return increment #判断游戏是否结束 def judge(self): if self.isOver(): print('你输了,游戏结束!') return False else: if self.totalScore >= 2048: print('你赢了,游戏结束!但是你还可以继续玩。') return True #判断游戏是否真正结束 def isOver(self): N = self.calcCharNumber(0) if N!=0: return False else: for row in range(4): flag = self.isListOver(self.v[row]) if flag==False: return False for col in range(4): # 将矩阵中一列复制到一个列表中然后处理 vList = [self.v[row][col] for row in range(4)] flag = self.isListOver(vList) if flag==False: return False return True #判断一个列表是否还可以合并 def isListOver(self, vList): for i in [0,1,2]: if vList[i]==vList[i+1] and vList[i+1]!=0: return False return True def calcCharNumber(self, char): n = 0 for q in self.v: n += q.count(char) return n def addElement(self): # 统计空白区域数目 N N = self.calcCharNumber(0) if N!=0: # 按2和4出现的几率为3/1来产生随机数2和4 num = random.choice([2, 2, 2, 4]) # 产生随机数k,上一步产生的2或4将被填到第k个空白区域 k = random.randrange(1, N+1) #k的范围为[1,N] n = 0 for i in range(4): for j in range(4): if self.v[i][j] == 0: n += 1 if n == k: self.v[i][j] = num return def moveLeft(self): self.moveHorizontal('left') def moveRight(self): self.moveHorizontal('right') def moveHorizontal(self, direction): for row in range(4): self.handle(self.v[row], direction) def moveUp(self): self.moveVertical('left') def moveDown(self): self.moveVertical('right') def moveVertical(self, direction): for col in range(4): # 将矩阵中一列复制到一个列表中然后处理 vList = [self.v[row][col] for row in range(4)] self.handle(vList, direction) # 从处理后的列表中的数字覆盖原来矩阵中的值 for row in range(4): self.v[row][col] = vList[row] #主要的处理函数 def operation(self): op = input('operator:') if op in ['a', 'A']: # 向左移动 self.moveLeft() self.addElement() elif op in ['d', 'D']: # 向右移动 self.moveRight() self.addElement() elif op in ['w', 'W']: # 向上移动 self.moveUp() self.addElement() elif op in ['s', 'S']: # 向下移动 self.moveDown() self.addElement() else: print('错误的输入。请输入 [W, S, A, D] 或者是其小写') #开始 print('输入:W(上移) S(下移) A(左移) D(右移), press <CR>.') g =game2048() flag = True while True: g.display() flag = g.judge() g.operation() flag = g.judge()
演示图
以上所述就是本文的全部内容了,希望大家能够喜欢。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.
