欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

基于python的socket實現(xiàn)單機五子棋到雙人對戰(zhàn)-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),友情鏈接廣告投放平臺為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。

本次實驗使用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)

搜索引擎優(yōu)化