用户:
cogmoh查看:1 回复:2 评论:1 创建时间:2023-01-15T19:42:38
import turtle # ----------------------------------------------------------------- # 1.基本信息区,放置游戏相关的一些信息 size = 70
grid = [[0, 0, 1, 1, 1, 0], [0,0,1,3,1,1], [1,1,1,2,2,1], [1,3,4,4,2,1], [1,1,2,2,2,1], [0,1,1,1,1,1]] width = len(grid[0]) height = len(grid) origin_x = -(width-1) / 2 * size origin_y = (height-1) / 2 * size #角色初始位置 player_x = 1 player_y = 3
# ------------------------------------------------------------ # 2.功能模块区,主要放置函数 def change_grid(): global grid, player_x, player_y if grid[player_y][player_x]==2: grid[player_y][player_x] == 3 elif grid[player_y][player_x] == 3: grid[player_y][player_x] ==4
def draw(pen, img, x, y): global origin_x ,origin_y,size pen.goto(origin_x + x * size, origin_y - y * size) pen.shape(img) pen.stamp()
def move_up(): global player_x, player_y, grid player_y -= 1 #移动范围 if player_y < 0: player_y += 1 elif grid[player_y][player_x] == 1: player_y += 1 change_grid()
def move_down(): global player_x, player_y, grid player_y += 1 #移动范围 if player_y >= height: player_y -= 1 return elif grid[player_y][player_x] == 1: player_y -= 1 return change_grid() def move_left(): global player_x, player_y, grid player_x -= 1 #移动范围 if player_x < 0: player_x += 1 return elif grid[player_y][player_x] == 1: player_x += 1 return change_grid() def move_right(): global player_x, player_y, grid player_x += 1 #移动范围 if player_x >= width: player_x -= 1 return elif grid[player_y][player_x] == 1: player_x -= 1 return change_grid() # ------------------------------------------------------------ # 3.操作事件区,放置键鼠操作相关的内容 turtle.onkey(move_up,'Up') turtle.onkey(move_down, 'Down') turtle.onkey(move_left, 'Left') turtle.onkey(move_right, 'Right') turtle.listen() # ------------------------------------------------------------ # 4.场景素材区,添加游戏画面相关的素材 tile_shapes = ['空.gif', '墙壁.gif', '通道.gif', '目标.gif', '箱子.gif'] for i in tile_shapes: turtle.addshape(i) turtle.addshape('编程猫.gif')
# ------------------------------------------------------------ # 5.画面绘制区,绘制场景用的画笔,绘制场景的代码 p = turtle.Pen() p.penup() p.hideturtle()
turtle.tracer(False) while True: p.clear()-------------------------------------tkinter.TclError:invalid command name ".!canvas" for i inrange(width): for j inrange(height): draw(p,tile_shapes[grid[j][i]],i,j) draw(p,'编程猫.gif',player_x,player_y) turtle.update() turtle.done()
import turtle
# -----------------------------------------------------------------
# 1.基本信息区,放置游戏相关的一些信息
size = 70
grid = [[0, 0, 1, 1, 1, 0],
[0, 0, 1, 3, 1, 1],
[1, 1, 1, 2, 2, 1],
[1, 3, 4, 4, 2, 1],
[1, 1, 2, 2, 2, 1],
[0, 1, 1, 1, 1, 1]]
width = len(grid[0])
height = len(grid)
origin_x = -(width-1) / 2 * size
origin_y = (height-1) / 2 * size
p_x = 1
p_y = 3
# ------------------------------------------------------------
# 2.功能模块区,主要放置函数
def c_g():
global grid, p_x, p_y
if grid[p_y][p_x] == 2:
grid[p_y][p_x] = 3
elif grid[p_y][p_x] == 3:
grid[p_y][p_x] = 4
def darw(pen, img, x, y):
global origin_x, origin_y
p.goto(origin_x + x * size, origin_y - y * size)
p.shape(img)
p.stamp()
def move_up():
global p_y, p_y, grid
p_y -= 1
if p_y <= 0:
p_y += 1
return
elif grid[p_y][p_x] == 1:
p_y -= 1
return
c_g()
def move_down():
global p_y, p_y, grid
p_y += 1
if p_y >= height:
p_y -= 1
return
elif grid[p_y][p_x] == 1:
p_y -= 1
return
c_g()
def move_left():
global p_x, p_y, grid
p_x -= 1
if p_x < 0:
p_x += 1
return
elif grid[p_y][p_x] == 1:
p_x += 1
return
c_g()
def move_right():
global p_x, p_y, grid
p_x += 1
if p_x >= width:
p_x -= 1
return
elif grid[p_y][p_x] == 1:
p_x -= 1
return
c_g()
# ------------------------------------------------------------
# 3.操作事件区,放置键鼠操作相关的内容
turtle.onkey(move_up, 'Up')
turtle.onkey(move_down, 'Down')
turtle.onkey(move_left, 'Left')
turtle.onkey(move_right, 'Right')
turtle.listen()
# ------------------------------------------------------------
# 4.场景素材区,添加游戏画面相关的素材
tile_shapes = ['空.gif', '墙壁.gif', '通道.gif', '目标.gif', '箱子.gif']
for i in tile_shapes:
turtle.addshape(i)
turtle.addshape('编程猫.gif')
# ------------------------------------------------------------
# 5.画面绘制区,绘制场景用的画笔,绘制场景的代码
p = turtle.Pen()
p.penup()
p.hideturtle()
turtle.tracer(False)
while True:
p.clear()
for i in range(width):
for j in range(height):
darw(p, tile_shapes[grid[j][i]], i, j)
darw(p, '编程猫.gif', p_x, p_y)
turtle.update()
turtle.done()
点赞0
评论