这篇文章主要为大家详细介绍了python实现人机五子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了python实现人机五子棋的具体代码,供大家参考,具体内容如下
图形界面引用PyQt5,还有socket通信。可以局域网对战,可以人机对战,应该存在一些小的bug,但是还没有找出来。希望读者可以找到
下面附几张运行的截图:
五子棋.py代码:
from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sys import MyButton import DoublePlayerGame import SinglePlayerGame from NetConfig import * import NetPlayerGame class Mainwindow(QWidget): def __init__(self,parent = None): super().__init__(parent) self.resize(760,650) self.setWindowTitle("我的五子棋") #设置窗口图标 self.setWindowIcon(QIcon("source/icon.ico")) #设置背景图片 p = QPalette(self.palette())#获得当前的调色板 brush = QBrush(QImage("source/五子棋界面.png-600")) p.setBrush(QPalette.Background,brush)#设置调色版 self.setPalette(p)#给窗口设置调色板 self.singlePlayerBtn = MyButton.MyButton('source/人机对战_hover.png-600', 'source/人机对战_normal.png-600', 'source/人机对战_press.png-600', parent=self) self.singlePlayerBtn.move(300,300) self.dancelePlayerBtn = MyButton.MyButton('source/双人对战_hover.png-600', 'source/双人对战_normal.png-600', 'source/双人对战_press.png-600', parent=self) self.dancelePlayerBtn.move(300,400) #self.dancelePlayerBtn.clicked.connect(DoublePlayerGame) self.drawlePlayerBtn = MyButton.MyButton('source/联机对战_hover.png-600', 'source/联机对战_normal.png-600', 'source/联机对战_press.png-600', parent=self) self.drawlePlayerBtn.move(300,500) #绑定开始双人游戏信号和槽函数 self.dancelePlayerBtn.clicked.connect(self.startDoubliGame) self.singlePlayerBtn.clicked.connect(self.startSingleGame) self.drawlePlayerBtn.clicked.connect(self.startNetGame) def startDoubliGame(self): print("in") #构建双人对战界面 self.doublePlayerGame = DoublePlayerGame.DoublePlayGame() #绑定返回界面 self.doublePlayerGame.backSignal.connect(self.showStartGame) self.doublePlayerGame.show()#显示游戏界面 self.close() def startSingleGame(self): self.SingleGame = SinglePlayerGame.SinglePlayerGame() self.SingleGame.backSignal.connect(self.showStartGame2) self.SingleGame.show() self.close() def startNetGame(self): self.netConfig = NetConfigWidget() self.netConfig.exit_signal.connect(self.show) self.netConfig.show() self.netConfig.config_signal.connect(self.receiveNetConfig) self.close() def receiveNetConfig(self,nettype,name,ip,port): ''' 接收网络配置信息 ''' print("net config:",nettype,name,ip,port) if nettype == "client": net_object = NetClient(name,ip,port) elif nettype == "server": net_object = NetServer(name,ip,port) else: return self.netPlayerGame = NetPlayerGame.NetPlayerGame(net_object=net_object) self.netPlayerGame.backSignal.connect(self.show) self.close() self.netPlayerGame.show() self.netConfig.hide() '''lbl = QLabel(self) pix = QPixmap("source/人机大战_norma.")''' #显示开始界面 def showStartGame(self): self.show() self.double<strong style="color:transparent">来源gaodai#ma#com搞@代~码网</strong>PlayerGame.close() def showStartGame2(self): self.show() self.SingleGame.close() if __name__ == "__main__": import cgitb cgitb.enable("text") a = QApplication(sys.argv) m = Mainwindow() m.show() sys.exit(a.exec_())
doubleplayergame.py代码:
from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5 import * import sys class Chessman(QLabel): def __init__(self, color = "black",parent = None): super().__init__(parent) self.color = color self.pic = None if self.color == "black": self.pic = QPixmap("source/黑子.png-600") else: self.pic = QPixmap("source/白子.png-600") self.setPixmap(self.pic) self.setFixedSize(self.pic.size())#设置棋子大小 self.show() self.x = 0 self.y = 0 def move(self,a0:QtCore.QPoint): super().move(a0.x()-15,a0.y()-15) def setIndex(self,x,y): self.x = x self.y = y import MyButton class DoublePlayGame(QWidget): backSignal = pyqtSignal()#返回信号 def __init__(self,parent = None): super().__init__(parent=parent) #左上角chessboard[0][0] #右上角chessboard[0][18] #左下角chessboard[18][0] #右下角chessboard[18][18] #chessboard[行下标][列下标] self.chessboard = [[None for i in range(19)] for i in range(19)] #落子棋子颜色 self.turnChessColor = "black" self.history = [] self.history2 = [] self.is_over = False #配置背景图 p = QPalette(self.palette())#获得当前的调色板 brush = QBrush(QImage("source/游戏界面.png-600")) p.setBrush(QPalette.Background,brush)#设置调色版 self.setPalette(p)#给窗口设置调色板 #设置标题 #self.resize(760,650) self.setWindowTitle("双人联机") #设置窗口图标 self.setWindowIcon(QIcon("source/icon.ico")) #设置窗口大小 self.setFixedSize(QImage("source/游戏界面.png-600").size()) self.backBtn = MyButton.MyButton('source/返回按钮_hover.png-600', 'source/返回按钮_normal.png-600', 'source/返回按钮_press.png-600', parent=self) self.backBtn.move(650,50) self.startBtn = MyButton.MyButton('source/开始按钮_hover.png-600', 'source/开始按钮_normal.png-600', 'source/开始按钮_press.png-600', parent=self) self.startBtn.move(650,300) self.returnBtn = MyButton.MyButton('source/悔棋按钮_hover.png-600', 'source/悔棋按钮_normal以上就是python实现人机五子棋的详细内容,更多请关注gaodaima搞代码网其它相关文章!