如何利用python實現(xiàn)五子棋呢?(下)

      網(wǎng)友投稿 757 2025-04-09

      客戶端

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      如何利用python實現(xiàn)五子棋呢?(下)

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      162

      163

      164

      165

      166

      167

      168

      169

      170

      171

      172

      173

      174

      175

      from?tkinterimport?*

      from?tkinter.messageboximport?*

      import?socket

      import?threading

      import?os

      # 主程序

      root=?Tk()

      root.title("網(wǎng)絡(luò)五子棋v2.0--UDP客戶端")

      imgs=?[PhotoImage(file='./images/BlackStone.png'), PhotoImage(file='./images/WhiteStone.png')]

      turn=?0

      MyTurn=?-1

      # 畫對方棋子

      def?drawOtherChess(x, y):

      global?turn

      img1=?imgs[turn]

      cv.create_image((x*?40?+?20, y*?40?+?20), image=img1)

      cv.pack()

      maps[x][y]=?str(turn)

      # 換下一方走棋

      if?turn==?0:

      turn=?1

      else:

      turn=?0

      # 發(fā)送消息

      def?sendMessage(position):

      global?s

      s.sendto(position.encode(), (host, port))

      # 退出函數(shù)

      def?callExit(event):

      position=?"exit|"

      sendMessage(position)

      os.exit()

      # 走棋函數(shù)

      def?callback(event):

      global?turn

      global?MyTurn

      if?MyTurn==?-1:

      MyTurn=?turn

      else:

      if?MyTurn !=?turn:

      showinfo(title="提示", message="還沒輪到自己走棋")

      return

      # print("clicked at",event.x,event.y)

      x=?event.x//?40

      y=?event.y//?40

      print("clicked at", x, y, turn)

      if?maps[x][y] !=?" ":

      showinfo(title="提示", message="已有棋子")

      else:

      img1=?imgs[turn]

      cv.create_image((x*?40?+?20, y*?40?+?20), image=img1)

      cv.pack()

      maps[x][y]=?str(turn)

      position=?str(x)+?','?+?str(y)

      sendMessage("move|"?+?position)

      print("客戶端走的位置", position)

      label1["text"]=?"客戶端走的位置"?+?position

      # 輸出輸贏信息

      if?win_lose():

      if?turn==?0:

      showinfo(title="提示", message="黑方你贏了")

      sendMessage("over|黑方你贏了!")

      else:

      showinfo(title="提示", message="白方你贏了!")

      sendMessage("over|白方你贏了!")

      # 換下一方走棋:

      if?turn==?0:

      turn=?1

      else:

      turn=?0

      # 畫棋盤

      def?drawQiPan():?# 畫棋盤

      for?iin?range(0,15):

      cv.create_line(20,20?+?40?*?i,580,20?+?40?*?i, width=2)

      for?iin?range(0,15):

      cv.create_line(20?+?40?*?i,20,20?+?40?*?i,580, width=2)

      cv.pack()

      # 輸贏判斷

      def?win_lose():

      a=?str(turn)

      print("a=", a)

      for?iin?range(0,11):

      for?jin?range(0,11):

      if?maps[i][j]==?aand?maps[i+?1][j+?1]==?aand?maps[i+?2][j+?2]==?aand?maps[i+?3][j+?3]==?aand?\

      maps[i+?4][j+?4]==?a:

      print("x=y軸上形成五子連珠")

      return?True

      for?iin?range(4,15):

      for?jin?range(0,11):

      if?maps[i][j]==?aand?maps[i-?1][j+?1]==?aand?maps[i-?2][j+?2]==?aand?maps[i-?3][j+?3]==?aand?\

      maps[i-?4][j+?4]==?a:

      print("x=-y軸上形成五子連珠")

      return?True

      for?iin?range(0,15):

      for?jin?range(4,15):

      if?maps[i][j]==?aand?maps[i][j-?1]==?aand?maps[i][j-?2]==?aand?maps[i][j-?2]==?aand?maps[i][

      j-?4]==?a:

      print("Y軸上形成了五子連珠")

      return?True

      for?iin?range(0,11):

      for?jin?range(0,15):

      if?maps[i][j]==?aand?maps[i+?1][j]==?aand?maps[i+?2][j]==?aand?maps[i+?3][j]==?aand?maps[i+?4][

      j]==?a:

      print("X軸形成五子連珠")

      return?True

      return?False

      # 接受消息

      def?receiveMessage():?# 接受消息

      global?s

      while?True:

      data=?s.recv(1024).decode('utf-8')

      a=?data.split("|")

      if?not?data:

      print('server has exited!')

      break

      elif?a[0]==?'exit':

      print('對方退出!')

      label1["text"]=?'對方退出!游戲結(jié)束!'

      elif?a[0]==?'over':

      print('對方贏信息!')

      label1["text"]=?data.split("|")[0]

      showinfo(title="提示", message=data.split("|")[1])

      elif?a[0]==?'move':

      print('received:', data)

      p=?a[1].split(",")

      x=?int(p[0])

      y=?int(p[1])

      print(p[0], p[1])

      label1["text"]=?"服務(wù)器走的位置"?+?p[0]+?p[1]

      drawOtherChess(x, y)

      s.close()

      # 啟動線程接受客戶端消息

      def?startNewThread():

      thread=?threading.Thread(target=receiveMessage, args=())

      thread.setDaemon(True)

      thread.start()

      if?__name__==?'__main__':

      # 主程序

      maps=?[[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "]for?yin?range(15)]

      cv=?Canvas(root, bg='green', width=610, height=610)

      drawQiPan()

      cv.bind("", callback)

      cv.pack()

      label1=?Label(root, text="客戶端...")

      label1.pack()

      button1=?Button(root, text="退出游戲")

      button1.bind("", callExit)

      button1.pack()

      # 創(chuàng)建UDP

      s=?socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

      port=?8000

      host=?'localhost'

      pos=?'join|'

      sendMessage(pos)

      startNewThread()

      root.mainloop()

      Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:WPS表格辦公—將單元格內(nèi)文字換行(wpsexcel表格內(nèi)文字換行)
      下一篇:如何把字移到最開頭(怎么把字推到前面)
      相關(guān)文章
      亚洲av麻豆aⅴ无码电影| 亚洲人成电影网站色| www亚洲精品久久久乳| 亚洲综合男人的天堂色婷婷| 亚洲高清在线视频| 亚洲欧洲自拍拍偷午夜色无码| 亚洲精品一级无码鲁丝片 | 亚洲国产精品毛片av不卡在线| 亚洲高清乱码午夜电影网| 国产91在线|亚洲| 亚洲天堂2017无码中文| 97se亚洲国产综合自在线| 国产.亚洲.欧洲在线| 久久亚洲精品国产精品婷婷 | 亚洲无线观看国产精品| 亚洲中文字幕无码久久2017| 亚洲日韩精品A∨片无码| 亚洲αv在线精品糸列| 亚洲爱情岛论坛永久| 色婷婷亚洲十月十月色天| 77777_亚洲午夜久久多人| 亚洲欧洲日本天天堂在线观看| 亚洲精品第一国产综合精品| 亚洲精品国产专区91在线| 亚洲乱码一二三四区麻豆| 亚洲 欧洲 自拍 另类 校园| 亚洲精品无码国产片| 大桥未久亚洲无av码在线| 亚洲精品一级无码鲁丝片| 亚洲综合伊人久久大杳蕉| 久久精品国产亚洲综合色| 亚洲精品自产拍在线观看动漫| 亚洲天天做日日做天天欢毛片| 亚洲视频日韩视频| 亚洲综合色一区二区三区| 国产精品亚洲专区无码牛牛| 亚洲日韩国产精品乱| 国产精一品亚洲二区在线播放| 亚洲综合国产精品| 亚洲一区二区三区高清视频| 亚洲国产精品无码中文lv|