一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python 實現勞拉游戲的實例代碼(四連環、重力四子棋)

Python 實現勞拉游戲的實例代碼(四連環、重力四子棋)

2021-09-13 00:39Miku丨無形 Python

這篇文章主要介紹了Python 實現勞拉游戲的實例代碼(四連環、重力四子棋),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

游戲規則:雙方輪流選擇棋盤的列號放進自己的棋子,
若棋盤上有四顆相同型號的棋子在一行、一列或一條斜線上連接起來,
則使用該型號棋子的玩家就贏了!

程序實現游戲,并將每局的數據保存到本地的文件中

首先我們要創建一個空白的棋盤

?
1
2
3
4
5
6
def into():#初始空白棋盤
  for i in range(6):
    list_width=[]
    for j in range(8):
      list_width.append(' '+'|')
    screen.append(list_width)

然后呢 我們再寫一個輸贏判斷

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def eeferee():#判斷輸贏
  #判斷行
  for i in range(6):
    for j in range(8-3):
      if screen[i][j][0]==screen[i][j+1][0]==screen[i][j+2][0]==screen[i][j+3][0] and screen[i][j][0]!=' ':
        return false
  #判斷列
  for i in range(6-3):
    for j in range(8):
      if screen[i][j][0]==screen[i+1][j][0]==screen[i+2][j][0]==screen[i+3][j][0] and screen[i][j][0]!=' ':
        return false
  #判斷斜線
  for i in range(6-3):
    for j in range(8-3):
      if screen[i][j][0]==screen[i+1][j+1][0]==screen[i+2][j+2][0]==screen[i+3][j+3][0] and screen[i][j][0]!=' ':
        return false
      if j>=3:
        if screen[i][j][0] == screen[i+1][j-1][0] == screen[i+2][j-2][0] == screen[i+3][j-3][0] and screen[i][j][0] != ' ':
          return false
  return true

下完每步棋,我們要顯示一下棋盤,下面寫一下棋盤的顯示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
def screen_print():#打印棋盤
  print('',1,2,3,4,5,6,7,8,sep=' ')
  print('', 1, 2, 3, 4, 5, 6, 7, 8, sep=' ', file=file, flush=true)
  for i in range(6):
    print('|',end='')
    print('|', end='', file=file, flush=true)
    for j in range(8):
      print(screen[i][j],end='')
      print(screen[i][j], end='', file=file, flush=true)
    print('')
    print('', file=file, flush=true)
  print('——'*(9))
  print('——' * (9), file=file, flush=true)

下面是勞拉的自動下棋

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def lara(): # 勞拉
  global screen
  while true:
    coordinate=random.randint(0,7)
    flag = true
    high = 0
    for i in range(5,-1,-1):
      if screen[i][coordinate][0] == ' ':
        high = i
        break
      if i == 0 and screen[i][coordinate][0] != ' ':
        flag = false
    if flag:
      print('>>>輪到我了,我把o棋子放在第%d列...'%(coordinate+1))
      print('>>>輪到我了,我把o棋子放在第%d列...' % (coordinate + 1), file=file, flush=true)
      screen[high][coordinate] = 'o' + '|'
      break
  screen_print()

下棋中 我們還要判斷棋盤是否被下滿了

?
1
2
3
4
5
6
def full():
  for i in screen:
    for j in i:
      if j[0] == ' ':
        return true
  return false

最后 我們完成一下玩家的下棋

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def user():
  global screen
  while true:
    print(">>>輪到你了,你放x棋子,請選擇列號(1-8): ",end='')
    print(">>>輪到你了,你放x棋子,請選擇列號(1-8): ", end='', file=file, flush=true)
    coordinate = int(input())-1
    if coordinate not in range(7):
      print('輸入錯誤的列號,請重新輸入')
      print('輸入錯誤的列號,請重新輸入', file=file, flush=true)
      continue
    flag=true
    high=0
    for i in range(5,-1,-1):
      if screen[i][coordinate][0] == ' ':
        high=i
        break
      if i==0 and screen[i][coordinate][0] != ' ':
        flag = false
        print('你輸入的地方已經有棋子了,請重新輸入')
        print('你輸入的地方已經有棋子了,請重新輸入', file=file, flush=true)
    if flag:
      screen[high][coordinate] = 'x' + '|'
      break
  screen_print()

完整代碼如下:

?
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
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
import random
 
screen = [] #棋盤列表
 
def into():#初始空白棋盤
  for i in range(6):
    list_width=[]
    for j in range(8):
      list_width.append(' '+'|')
    screen.append(list_width)
 
def screen_print():#打印棋盤
  print('',1,2,3,4,5,6,7,8,sep=' ')
  print('', 1, 2, 3, 4, 5, 6, 7, 8, sep=' ', file=file, flush=true)
  for i in range(6):
    print('|',end='')
    print('|', end='', file=file, flush=true)
    for j in range(8):
      print(screen[i][j],end='')
      print(screen[i][j], end='', file=file, flush=true)
    print('')
    print('', file=file, flush=true)
  print('——'*(9))
  print('——' * (9), file=file, flush=true)
 
def eeferee():#判斷輸贏
  #判斷行
  for i in range(6):
    for j in range(8-3):
      if screen[i][j][0]==screen[i][j+1][0]==screen[i][j+2][0]==screen[i][j+3][0] and screen[i][j][0]!=' ':
        return false
  #判斷列
  for i in range(6-3):
    for j in range(8):
      if screen[i][j][0]==screen[i+1][j][0]==screen[i+2][j][0]==screen[i+3][j][0] and screen[i][j][0]!=' ':
        return false
  #判斷斜線
  for i in range(6-3):
    for j in range(8-3):
      if screen[i][j][0]==screen[i+1][j+1][0]==screen[i+2][j+2][0]==screen[i+3][j+3][0] and screen[i][j][0]!=' ':
        return false
      if j>=3:
        if screen[i][j][0] == screen[i+1][j-1][0] == screen[i+2][j-2][0] == screen[i+3][j-3][0] and screen[i][j][0] != ' ':
          return false
  return true
 
def full():
  for i in screen:
    for j in i:
      if j[0] == ' ':
        return true
  return false
 
def lara(): # 勞拉
  global screen
  while true:
    coordinate=random.randint(0,7)
    flag = true
    high = 0
    for i in range(5,-1,-1):
      if screen[i][coordinate][0] == ' ':
        high = i
        break
      if i == 0 and screen[i][coordinate][0] != ' ':
        flag = false
    if flag:
      print('>>>輪到我了,我把o棋子放在第%d列...'%(coordinate+1))
      print('>>>輪到我了,我把o棋子放在第%d列...' % (coordinate + 1), file=file, flush=true)
      screen[high][coordinate] = 'o' + '|'
      break
  screen_print()
 
def user():
  global screen
  while true:
    print(">>>輪到你了,你放x棋子,請選擇列號(1-8): ",end='')
    print(">>>輪到你了,你放x棋子,請選擇列號(1-8): ", end='', file=file, flush=true)
    coordinate = int(input())-1
    if coordinate not in range(7):
      print('輸入錯誤的列號,請重新輸入')
      print('輸入錯誤的列號,請重新輸入', file=file, flush=true)
      continue
    flag=true
    high=0
    for i in range(5,-1,-1):
      if screen[i][coordinate][0] == ' ':
        high=i
        break
      if i==0 and screen[i][coordinate][0] != ' ':
        flag = false
        print('你輸入的地方已經有棋子了,請重新輸入')
        print('你輸入的地方已經有棋子了,請重新輸入', file=file, flush=true)
    if flag:
      screen[high][coordinate] = 'x' + '|'
      break
  screen_print()
 
 
if __name__ == '__main__':
  file=open('四連環log-%d.txt'%random.randint(10000,99999),'w',encoding='utf-8')
  print("""hi,我是勞拉,我們來玩一局四連環。我用o型棋子,你用x型棋子。
游戲規則:雙方輪流選擇棋盤的列號放進自己的棋子,
    若棋盤上有四顆相同型號的棋子在一行、一列或一條斜線上連接起來,
    則使用該型號棋子的玩家就贏了!""")
  print("""hi,我是勞拉,我們來玩一局四連環。我用o型棋子,你用x型棋子。
  游戲規則:雙方輪流選擇棋盤的列號放進自己的棋子,
      若棋盤上有四顆相同型號的棋子在一行、一列或一條斜線上連接起來,
      則使用該型號棋子的玩家就贏了!""", file=file, flush=true)
  into()
  print('開始了!這是棋盤的初始狀態:')
  print('開始了!這是棋盤的初始狀態:', file=file, flush=true)
  screen_print()
  flag=true
  while eeferee() and full():
    lara()
    if not eeferee() and full():
      flag=false
      break
    user()
  if full():
    print('******* 難分勝負!@_@')
    print('******* 難分勝負!@_@', file=file, flush=true)
  if flag:
    print('******* 好吧,你贏了!^_^')
    print('******* 好吧,你贏了!^_^', file=file, flush=true)
  else:
    print('******* 耶,我贏了!^_^')
    print('******* 耶,我贏了!^_^', file=file, flush=true)

效果圖:

Python 實現勞拉游戲的實例代碼(四連環、重力四子棋)

到此這篇關于python 實現勞拉游戲的實例代碼(四連環、重力四子棋)的文章就介紹到這了,更多相關python 實現勞拉游戲內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/Miku_wx/article/details/111811663

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 操美女 | 国产日韩精品欧美一区 | 草莓在线| 糖心视频在线观看 | 九九99精品 | 国产福利片在线 | 楚乔传第二部全60集免费观看 | 欧美一级片免费在线观看 | 成人免费一区二区三区在线观看 | 国产欧美二区三区 | 夫妻性生活影院 | 99视频在线看观免费 | 国色天香社区视频在线观看免费完整版 | 日韩视频免费看 | 亚洲精品国产一区二区第一页 | 午夜爽喷水无码成人18禁三级 | 虎四免费入口 | 超91精品手机国产在线 | 国产精品资源站 | 俄罗斯妈妈235 | 8x8拨擦拨擦华人免费 | 拍拍叫痛的无挡视频免费 | 国产在线91 | 欧美一二区视频 | 国产全部视频 | 72张让男人一看就硬的图片 | 日韩精品国产自在欧美 | 99久久精品自在自看国产 | 青青青久在线视频免费观看 | 日本黄视频在线播放 | 国产精品猎奇系列在线观看 | 国产成人精品免费久久久久 | 国产草逼视频 | 久久精品国产只有精品 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 欧美日韩综合网在线观看 | 性做久久久久免费观看 | 日韩欧美在线观看综合网另类 | 456成人免费高清视频 | 欧美生活一级片 | 国产伦精品一区二区三区免费迷 |