基于python的socket實現(xiàn)單機五子棋到雙人對戰(zhàn),供大家參考,具體內(nèi)容如下

本次實驗使用python語言。通過socket進行不同機器見的通信,具體可以分為以下四步:1.創(chuàng)建ServerSocket和Socket;2.打開鏈接到Socket的輸入/輸出流;3.按照協(xié)議對Socket進行讀/寫操作;4.關(guān)閉輸入輸出流、關(guān)閉Socket。
由于是雙人對戰(zhàn),服務(wù)器必須應(yīng)對多人及以上的客戶端的連接,因此本實驗還引入了python的threading多線程模塊,通過監(jiān)聽實時監(jiān)控網(wǎng)絡(luò)狀態(tài),同時利用socket.listen(2)引入排隊等待機制。
chess類
#五子棋類
import os
class chessboard(object):
def __init__(self):
self.size = 16
#初始化棋盤
self.__board=[[' ' for n in range(self.size)] for m in range(self.size)]
n = 0
#添加桌面標(biāo)簽
while n < self.size:
ntr=str(n)
self.__board[0][n] = ntr.zfill(2)
self.__board[n][0] = ntr.zfill(2)
n=n+1
self.id=0
#勝利條件
def is_end(self):
ch_stack=[]
#行檢查
for i in range(self.size):
for j in range(self.size):
#判斷是否結(jié)束
chess=self.__board[i][j]
if len(ch_stack)==5 and ch_stack[-1]=='* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
if chess==' ':
ch_stack.clear()
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
ch_stack.clear()
ch_stack.clear()
#列檢查
for j in range(self.size):
for i in range(self.size):
#判斷是否結(jié)束
if len(ch_stack)==5 and ch_stack[-1]=='* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
chess=self.__board[i][j]
if chess==' ':
ch_stack.clear()
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
ch_stack.clear()
ch_stack.clear()
#左斜檢查
#下三角
for i in range(self.size):
for j in range(1,self.size):
#判斷是否結(jié)束
if len(ch_stack)==5 and ch_stack[-1]=='* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
if i+j<self.size:
chess=self.__board[i+j][j]
if chess==' ':
ch_stack.clear()
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
else:
break
ch_stack.clear()
ch_stack.clear()
#上三角
for i in range(self.size):
for j in range(1,self.size):
#判斷是否結(jié)束
if len(ch_stack)==5 and ch_stack[-1]=='* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
if i+j<self.size:
chess=self.__board[j][j+i]
if chess==' ':
ch_stack.clear()
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
else:
break
ch_stack.clear()
ch_stack.clear()
#右斜檢查
#上三角
for i in range(self.size):
for j in range(1,self.size):
#判斷是否結(jié)束
if len(ch_stack)==5 and ch_stack[-1]=='* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
if self.size-i-j+1>0:
chess=self.__board[self.size-i-j][j]
if chess==' ':
ch_stack.clear()
elif not chess:
break
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
else:
break
ch_stack.clear()
ch_stack.clear()
#下三角
for i in range(self.size):
for j in range(1,self.size):
# 判斷是否結(jié)束
if len(ch_stack) == 5 and ch_stack[-1] == '* ':
print('winner=id 1')
return 1
elif len(ch_stack) == 5 and ch_stack[-1] == '@ ':
print('winner=id 2')
return 2
if self.size-i-j> 0:
chess = self.__board[j][self.size-i-j]
if chess == ' ':
ch_stack.clear()
elif not chess:
break
else:
if (not ch_stack) or ch_stack[-1] == chess:
ch_stack.append(chess)
else:
ch_stack.clear()
ch_stack.append(chess)
else:
break
ch_stack.clear()
ch_stack.clear()
return 0
def draw(self):
#clear()
for x in self.__board:
print(x)
return 0
def drop_chess(self,x,y,id):
if id==1 and self.__board[x][y]==' ':
self.__board[x][y]='* '
return 1
elif id==2 and self.__board[x][y]==' ':
self.__board[x][y]='@ '
return 1
else:
return 0另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:基于python的socket實現(xiàn)單機五子棋到雙人對戰(zhàn)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.chinadenli.net/article0/djopio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、服務(wù)器托管、虛擬主機、用戶體驗、手機網(wǎng)站建設(shè)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)