Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
游戏规则:双方轮流选择棋盘的列号放进自己的棋子,
若棋盘上有四颗相同型号的棋子在一行、一列或一条斜线上连接起来,
则使用该型号棋子的玩家就赢了!
程序实现游戏,并将每局的数据保存到本地的文件中
首先我们要创建一个空白的棋盘
definto():#初始空白棋盘
foriinrange(6):
list_width=[]
forjinrange(8):
list_width.append(''+'|')
screen.append(list_width)
然后呢我们再写一个输赢判断
defeeferee():#判断输赢 #判断行 foriinrange(6): forjinrange(8-3): ifscreen[i][j][0]==screen[i][j+1][0]==screen[i][j+2][0]==screen[i][j+3][0]andscreen[i][j][0]!='': returnFalse #判断列 foriinrange(6-3): forjinrange(8): ifscreen[i][j][0]==screen[i+1][j][0]==screen[i+2][j][0]==screen[i+3][j][0]andscreen[i][j][0]!='': returnFalse #判断斜线 foriinrange(6-3): forjinrange(8-3): ifscreen[i][j][0]==screen[i+1][j+1][0]==screen[i+2][j+2][0]==screen[i+3][j+3][0]andscreen[i][j][0]!='': returnFalse ifj>=3: ifscreen[i][j][0]==screen[i+1][j-1][0]==screen[i+2][j-2][0]==screen[i+3][j-3][0]andscreen[i][j][0]!='': returnFalse returnTrue
下完每步棋,我们要显示一下棋盘,下面写一下棋盘的显示
defscreen_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)
foriinrange(6):
print('|',end='')
print('|',end='',file=file,flush=True)
forjinrange(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)
下面是劳拉的自动下棋
deflara():#劳拉
globalscreen
whileTrue:
coordinate=random.randint(0,7)
flag=True
high=0
foriinrange(5,-1,-1):
ifscreen[i][coordinate][0]=='':
high=i
break
ifi==0andscreen[i][coordinate][0]!='':
flag=False
ifflag:
print('>>>轮到我了,我把O棋子放在第%d列...'%(coordinate+1))
print('>>>轮到我了,我把O棋子放在第%d列...'%(coordinate+1),file=file,flush=True)
screen[high][coordinate]='O'+'|'
break
screen_print()
下棋中我们还要判断棋盘是否被下满了
deffull(): foriinscreen: forjini: ifj[0]=='': returnTrue returnFalse
最后我们完成一下玩家的下棋
defuser():
globalscreen
whileTrue:
print(">>>轮到你了,你放X棋子,请选择列号(1-8):",end='')
print(">>>轮到你了,你放X棋子,请选择列号(1-8):",end='',file=file,flush=True)
coordinate=int(input())-1
ifcoordinatenotinrange(7):
print('输入错误的列号,请重新输入')
print('输入错误的列号,请重新输入',file=file,flush=True)
continue
flag=True
high=0
foriinrange(5,-1,-1):
ifscreen[i][coordinate][0]=='':
high=i
break
ifi==0andscreen[i][coordinate][0]!='':
flag=False
print('你输入的地方已经有棋子了,请重新输入')
print('你输入的地方已经有棋子了,请重新输入',file=file,flush=True)
ifflag:
screen[high][coordinate]='X'+'|'
break
screen_print()
完整代码如下:
importrandom
screen=[]#棋盘列表
definto():#初始空白棋盘
foriinrange(6):
list_width=[]
forjinrange(8):
list_width.append(''+'|')
screen.append(list_width)
defscreen_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)
foriinrange(6):
print('|',end='')
print('|',end='',file=file,flush=True)
forjinrange(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)
defeeferee():#判断输赢
#判断行
foriinrange(6):
forjinrange(8-3):
ifscreen[i][j][0]==screen[i][j+1][0]==screen[i][j+2][0]==screen[i][j+3][0]andscreen[i][j][0]!='':
returnFalse
#判断列
foriinrange(6-3):
forjinrange(8):
ifscreen[i][j][0]==screen[i+1][j][0]==screen[i+2][j][0]==screen[i+3][j][0]andscreen[i][j][0]!='':
returnFalse
#判断斜线
foriinrange(6-3):
forjinrange(8-3):
ifscreen[i][j][0]==screen[i+1][j+1][0]==screen[i+2][j+2][0]==screen[i+3][j+3][0]andscreen[i][j][0]!='':
returnFalse
ifj>=3:
ifscreen[i][j][0]==screen[i+1][j-1][0]==screen[i+2][j-2][0]==screen[i+3][j-3][0]andscreen[i][j][0]!='':
returnFalse
returnTrue
deffull():
foriinscreen:
forjini:
ifj[0]=='':
returnTrue
returnFalse
deflara():#劳拉
globalscreen
whileTrue:
coordinate=random.randint(0,7)
flag=True
high=0
foriinrange(5,-1,-1):
ifscreen[i][coordinate][0]=='':
high=i
break
ifi==0andscreen[i][coordinate][0]!='':
flag=False
ifflag:
print('>>>轮到我了,我把O棋子放在第%d列...'%(coordinate+1))
print('>>>轮到我了,我把O棋子放在第%d列...'%(coordinate+1),file=file,flush=True)
screen[high][coordinate]='O'+'|'
break
screen_print()
defuser():
globalscreen
whileTrue:
print(">>>轮到你了,你放X棋子,请选择列号(1-8):",end='')
print(">>>轮到你了,你放X棋子,请选择列号(1-8):",end='',file=file,flush=True)
coordinate=int(input())-1
ifcoordinatenotinrange(7):
print('输入错误的列号,请重新输入')
print('输入错误的列号,请重新输入',file=file,flush=True)
continue
flag=True
high=0
foriinrange(5,-1,-1):
ifscreen[i][coordinate][0]=='':
high=i
break
ifi==0andscreen[i][coordinate][0]!='':
flag=False
print('你输入的地方已经有棋子了,请重新输入')
print('你输入的地方已经有棋子了,请重新输入',file=file,flush=True)
ifflag:
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
whileeeferee()andfull():
lara()
ifnoteeferee()andfull():
flag=False
break
user()
iffull():
print('*******难分胜负!@_@')
print('*******难分胜负!@_@',file=file,flush=True)
ifflag:
print('*******好吧,你赢了!^_^')
print('*******好吧,你赢了!^_^',file=file,flush=True)
else:
print('*******耶,我赢了!^_^')
print('*******耶,我赢了!^_^',file=file,flush=True)
效果图:
到此这篇关于Python实现劳拉游戏的实例代码(四连环、重力四子棋)的文章就介绍到这了,更多相关Python实现劳拉游戏内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。