gpt4 book ai didi

Python 实现劳拉游戏的实例代码(四连环、重力四子棋)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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 。

最后此篇关于Python 实现劳拉游戏的实例代码(四连环、重力四子棋)的文章就讲到这里了,如果你想了解更多关于Python 实现劳拉游戏的实例代码(四连环、重力四子棋)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com