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

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

学习点:

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

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

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

2010112723132470.png

ContractedBlock.gif ExpandedBlockStart.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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值