Python学习【一】用Python写个数字拼图游戏

9*9数字拼图游戏
本文介绍了一个经典的9*9数字拼图游戏的实现方法,重点讲解了如何使用Python的random模块打乱数字列表,并利用列表进行切片与拼接来构建游戏面板。此外还介绍了如何通过字符输入控制游戏进程。

传统的9*9 数字拼图游戏。

学习点:

1.random模块的使用:列表数据打乱

2.列表的使用:切片、拼接

3.字符输入(如你知道实现无等待输入,请告诉我)

2010112723132470.png

ContractedBlock.gifExpandedBlockStart.gif代码
#-*- coding: UTF-8 -*-
'''
一个9*9数字拼图游戏
约定0为空白处
'''

import random

digits
= [0,1,2,3,4,5,6,7,8]
#将数字打乱
random.shuffle(digits);

#切分成3行
digit1 = digits.__getslice__(0,3)
digit2
= digits.__getslice__(3,6)
digit3
= digits.__getslice__(6,9)
#游戏面板
digit_panel = [digit1, digit2, digit3]

#ensure pos in resonble value
def ensure(origin, min_value, max_value):
if origin < min_value:
origin
= min_value
if origin > max_value:
origin
= max_value
return origin

#show the game panel
def showGamePanel():
for _row in digit_panel:
print _row

#检查是否胜利
def checkWin():
correct
=[1,2,3,4,5,6,7,8,0]
curDigits
= digit1+digit2+digit3
if correct == curDigits:
return True
else:
return False


def gameStart():
#计算0出现的位置
row = digits.index(0)/3
col
= digits.index(0)%3
pos
= [row, col]
# 更新游戏面板
showGamePanel()

while True:
key
= raw_input("Press 'w a s d' to do move up left down right:")
print 'key is', key
if key == 'w':
row
+= 1
row
= ensure(row, 0, 2)
elif key == 's':
row
-= 1
row
= ensure(row, 0, 2)
elif key == 'a':
col
+= 1
col
= ensure(col, 0, 2)
elif key == 'd':
col
-= 1
col
= ensure(col, 0, 2)
elif key == 'quit':
exit()


#保存原有坐标
oldPos = [pos[0], pos[1]]
#更新现有坐标
pos = [row, col]
#交换,移动数字
tmp = digit_panel[pos[0]][pos[1]]
digit_panel[pos[0]][pos[
1]] = 0
digit_panel[oldPos[0]][oldPos[
1]] = tmp

# 更新游戏面板
showGamePanel()
if checkWin()==True:
print 'You win the game! '
exit()


if __name__ =="__main__":
gameStart()

转载于:https://www.cnblogs.com/lihex/archive/2010/11/27/1890000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值