python如何實(shí)現(xiàn)網(wǎng)絡(luò)中的五子棋呢?(上)

      網(wǎng)友投稿 861 2025-03-31

      服務(wù)器端:

      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

      python如何實(shí)現(xiàn)網(wǎng)絡(luò)中的五子棋呢?(上)

      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

      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

      176

      177

      178

      179

      180

      181

      182

      183

      import?os

      import?socket

      import?threading

      from?tkinterimport?*

      from?tkinter.messageboximport?*

      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()

      # 走棋函數(shù)

      def?callPos(event):

      global?turn

      global?MyTurn

      if?MyTurn==?-1:?# 第一次確認(rèn)自己的角色

      MyTurn=?turn

      else:

      if?MyTurn !=?turn:

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

      return

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

      x=?event.x//?40

      y=?event.y//?40

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

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

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

      else:

      img1=?images[turn]

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

      cv.pack()

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

      pos=?str(x)+?","?+?str(y)

      sendMessage("move|"?+?pos)

      print("服務(wù)器走的位置", pos)

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

      # 輸出輸贏信息

      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

      # 發(fā)送消息

      def?sendMessage(pos):

      global?s

      global?addr

      s.sendto(pos.encode(), addr)

      # 退出函數(shù)

      def?callExit(event):

      pos=?"exit|"

      sendMessage(pos)

      os.exit()

      # 畫對(duì)方棋子

      def?drawOtherChess(x, y):

      global?turn

      img1=?images[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

      # 判斷整個(gè)棋盤的輸贏

      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

      # 輸出map地圖

      def?print_map():

      for?jin?range(0,15):

      for?iin?range(0,15):

      print(maps[i][j], end=' ')

      print('w')

      # 接受消息

      def?receiveMessage():

      global?s

      while?True:?# 接受客戶端發(fā)送的消息

      global?addr

      data, addr=?s.recvfrom(1024)

      data=?data.decode('utf-8')

      a=?data.split("|")

      if?not?data:

      print('client has exited!')

      break

      elif?a[0]==?'join':?# 連接服務(wù)器的請(qǐng)求

      print('client 連接服務(wù)器!')

      label1["text"]=?'client連接服務(wù)器成功,請(qǐng)你走棋!'

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

      print('client對(duì)方退出!')

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

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

      print('對(duì)方贏信息!')

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

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

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

      print('received:', data,'from', addr)

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

      x=?int(p[0])

      y=?int(p[1])

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

      label1["text"]=?"客戶端走的位置"?+?p[0]+?p[1]

      drawOtherChess(x, y)

      s.close()

      def?startNewThread():?# 啟動(dòng)新線程來接受客戶端消息

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

      thread.setDaemon(True)

      thread.start()

      if?__name__==?'__main__':

      root=?Tk()

      root.title("網(wǎng)絡(luò)五子棋v2.0-服務(wù)器端")

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

      turn=?0

      MyTurn=?-1

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

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

      drawQiPan()

      cv.bind("", callPos)

      cv.pack()

      label1=?Label(root, text="服務(wù)器端...")

      label1.pack()

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

      button1.bind("", callExit)

      button1.pack()

      # 創(chuàng)建UDP SOCKET

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

      s.bind(('localhost',8000))

      addr=?('localhost',8000)

      startNewThread()

      root.mainloop()

      Python 網(wǎng)絡(luò)

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

      上一篇:諾基亞和愛立信已承諾在印度生產(chǎn)制造5G網(wǎng)絡(luò)設(shè)備
      下一篇:Excel輸入當(dāng)天日期時(shí)間快捷鍵和函數(shù)動(dòng)畫教程
      相關(guān)文章
      亚洲图片在线观看| 日韩精品一区二区亚洲AV观看| 亚洲一区二区精品视频| 亚洲av乱码一区二区三区香蕉| 亚洲Av无码专区国产乱码DVD| 亚洲精品国偷自产在线| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲欧美日韩综合久久久| 国产亚洲精品成人AA片| 亚洲校园春色另类激情| 亚洲AV成人影视在线观看| 久久乐国产综合亚洲精品| 一本色道久久88—综合亚洲精品| 亚洲精品一二三区| 亚洲人成电影网站免费| 亚洲日韩AV一区二区三区中文| 亚洲日韩AV一区二区三区中文 | 亚洲午夜精品一区二区公牛电影院| 亚洲男人电影天堂| 亚洲人成网站在线观看播放青青| 亚洲乱码日产精品BD在线观看| 亚洲av永久综合在线观看尤物| 日韩亚洲人成在线| 麻豆亚洲AV成人无码久久精品| 国产亚洲人成在线影院| 亚洲国产一区二区视频网站| 中文字幕不卡亚洲| 亚洲成AV人片在| 久久亚洲AV无码精品色午夜 | 亚洲国产高清在线| 老司机亚洲精品影院无码| 亚洲第一页在线视频| 亚洲制服在线观看| 亚洲熟女综合色一区二区三区| 亚洲精品无码专区| 亚洲精品视频在线观看你懂的| 国产偷窥女洗浴在线观看亚洲| 亚洲中文字幕无码一区| 久久久久久久久亚洲| 亚洲国产综合人成综合网站00| 学生妹亚洲一区二区|