用户:
苹果真好吃查看:12 回复:3 评论:12 创建时间:2024-01-28T21:50:55
from turtle import *
import copy
# -----------------------------------------------------------------
# 1.基本信息区,放置游戏相关的一些信息
# 0:游戏结束 1:过关 2:游戏进行中
bgcolor('lightblue')
mousexy = [0,0]
re = 2
size = 70
le = 1
le1 = [[0,1,1,1,1,0],
[0,1,2,2,1,0],
[1,1,2,2,1,1],
[1,3,2,2,2,1],
[1,1,2,2,2,1],
[0,1,1,1,1,1]]
le2 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le3 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,6,1,6,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le4 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le5 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le6 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le7 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le8 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le9 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le10 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le11 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le12 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le13 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le14 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le15 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le16 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
le17 = [[1,1,1,1,1,1,1,1],
[1,2,2,2,2,2,2,1],
[1,2,2,1,2,2,2,1],
[1,2,2,2,2,2,2,1],
[1,2,2,2,1,2,2,1],
[1,2,2,2,2,2,2,1],
[1,3,2,2,2,2,2,1],
[1,1,1,1,1,1,1,1]]
les = [le1,le2,le3,le4,le5,le6,le7,le8,le9,le10,le11,le12,le13,le14,le15,le16,le17]
grid = copy.deepcopy(les[le-1])
width = len(grid[0])
height = len(grid)
ox = -(width-1)/2*size
oy = (height-1)/2*size
pu()
#角色初始位置
ps = [[1,3],[1,6],[1,6],[1,3],[1,6],[1,6],[1,3],[1,6],[1,6],[1,3],[1,6],[1,6],[1,3],[1,6],[1,6],[1,3],[1,6]]
px = ps[le-1][0]
py = ps[le-1][1]
# ------------------------------------------------------------
# 2.功能模块区,主要放置函数
def shre():
global re,grid,px,py
if grid[py][px] == 4:
re = 0
else:
for i in grid:
if 2 in i:
re = 2
break
else:
re = 1
def draw(img,x,y):
global ox, oy, size
addshape('千万要点.gif')
goto(280, -290)
shape('千万要点.gif')
stamp()
goto(ox+x*size,oy-y*size)
shape(img)
stamp()
def up():
global py
if re != 2:
return
py -= 1
#移动范围
if py < 0:
py += 1
return
elif grid[py][px] == 1:
py += 1
return
cg()
def down():
global py
if re != 2:
return
py += 1
#移动范围
if py < 0:
py -= 1
return
elif grid[py][px] == 1:
py -= 1
return
#改变地形
cg()
def left():
global px
if re != 2:
return
px -= 1
#移动范围
if px < 0:
px += 1
return
elif grid[py][px] == 1:
px += 1
return
cg()
def right():
global px
if re != 2:
return
px += 1
#移动范围
if px < 0:
px -= 1
return
elif grid[py][px] == 1:
px -= 1
return
cg()
def cg():
global grid,px,py
if grid[py][px] == 2:
grid[py][px] = 3
elif grid[py][px] == 3:
grid[py][px] = 4
shre()
def nle():
global re,le,grid,px,py,width,height,ox,oy,size
if re == 1:
le += 1
elif re == 0:
clear()
draw(res[re], (width-1)/2, (height - 1)/2)
re = 2
grid = copy.deepcopy(les[le-1])
width = len(grid[0])
height = len(grid)
ox = 0-size*(width-1)/2
oy = 0+size*(height-1)/2
px = ps[le-1][0]
py = ps[le-1][1]
def get_mouse_click(x,y):
global mousexy
mousexy = [x,y]
print(mousexy)
onscreenclick(get_mouse_click)
def blink3():
global grid, player_x, player_y
if player_x == 3 and player_y == 5: # 只要位于(3,1),就去到(2,4)
if level_n == 3: # 只在第一关生效(通过这个数字自己调整在第几关生效)
player_x = 1
player_y = 5
elif player_x == 1 and player_y == 5: # 只要位于(2,4),就去到(3,1)
if level_n == 3: # 只在第一关生效(通过这个数字自己调整在第几关生效)
player_x = 3
player_y = 5
# 3.操作事件区,放置键鼠操作相关的内容
onkey(up,'Up')
onkey(down,'Down')
onkey(left,'Left')
onkey(right,'Right')
onkey(nle,'Return')
listen()
# ------------------------------------------------------------
# 4.场景素材区,添加游戏画面相关的素材
tile_shapes = ['空.gif', '墙壁.gif', '通道.gif', '通道2.gif', '窟窿.gif','传送门.gif']
for i in tile_shapes:
addshape(i)
addshape('角色8.gif')
addshape('遮罩.gif')
res = ['失败.gif', '成功.gif', '空.gif']
for i in res:
addshape(i)
# ------------------------------------------------------------
# 5.画面绘制区,绘制场景用的画笔,绘制场景的代码
penup()
hideturtle()
tracer(False)
while True:
clear()
for i in range(width):
for j in range(height):
draw(tile_shapes[grid[j][i]],i,j)
if mousexy[0] < 324 and mousexy[0] > 235 and mousexy[1] < -284 and mousexy[1] > -308:
draw('遮罩.gif',px,py)
draw('角色8.gif',px,py)
draw(res[re],(width-1)/2,(height -1)/2)
update()
done()




上方有图片(空.gif)



上方图片(千万要点.gif)



这是冬令营的作品,有素材的直接复制代码就好,报错信息是“我”在访问列表索引外的内容(IndexError: list index out of range)