猫史档案馆


【Python作品分享】消除bug大作战【作品秀】

用户:星辰Gk37星辰Gk37查看:0 回复:0 评论:0 创建时间:2023-07-17T17:50:54


【作品展示】

center_image

 

【作品介绍】

你的代码出了bug,于是你就进入了电脑修复bug。注意,电脑中的电流不能碰哦。

 

【作品源代码】

import turtle
import copy
# 1
turtle.bgpic('背景5.gif')
size = 70
ln=1
l1 =   [[1, 1, 1, 1, 1, 1],
        [1, 2, 2, 2, 2, 1],
        [1, 2, 1, 2, 2, 1],
        [1, 2, 2, 2, 2, 1],
        [1, 1, 2, 2, 2, 1],
        [1, 1, 1, 1, 1, 1]]
l2 =   [[1, 1, 1, 1, 1, 1, 1],
        [1, 2, 2, 1, 2, 2, 1],
        [1, 5, 6, 1, 5, 8, 1],
        [1, 1, 1, 1, 1, 1, 1],
        [1, 6, 7, 1, 7, 8, 1],
        [1, 2, 2, 1, 2, 2, 1],
        [1, 1, 1, 1, 1, 1, 1]]
l3 =   [[1, 2, 1, 1, 1, 1],
        [1, 2, 9, 2, 2, 1],
        [1, 2, 1, 1, 2, 1],
        [1, 2, 1, 1, 2, 1],
        [1, 2, 2, 2, 2, 1],
        [1, 1, 1, 1, 1, 1]]
ls=[l1,l2,l3]
grid=copy.deepcopy(ls[ln-1])
width = len(grid[0])
height = len(grid)
origin_x = -(width-1) / 2 * size
origin_y = (height-1) / 2 * size
ps=[[1,1],[5,5],[1,1]]
player_x =ps[ln-1][0]
player_y =ps[ln-1][1]
result=2
# 2
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,result
    if result==0 or result==1:
        return    
    player_y -= 1
    if player_y < 0:
        player_y += 1
        return
    elif grid[player_y][player_x] == 1:
        result= 0
        return
    change_grid()
def move_down():
    global player_x, player_y, grid,result
    if result == 0 or result == 1:
        return
    player_y += 1
    if player_y >= height:
        player_y -= 1
        return
    elif grid[player_y][player_x] == 1:
        result= 0
        return
    change_grid()
def move_left():
    global player_x, player_y, grid,result
    if result == 0 or result == 1:
        return
    player_x -= 1
    if player_x < 0:
        player_x += 1
        return
    elif grid[player_y][player_x] == 1:
        result= 0
        return
    change_grid()
def move_right():
    global player_x, player_y, grid,result
    if result == 0 or result == 1:
        return
    player_x += 1
    if player_x >= width:
        player_x -= 1
        return
    elif grid[player_y][player_x] == 1:
        result= 0
        return
    change_grid()
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
    if ln==2:
        if grid[player_y][player_x] == 5:
            player_x= 1
            player_y=2
        elif grid[player_y][player_x] == 6:
            player_x=1
            player_y=4
        if grid[player_y][player_x] == 7:
            player_x = 4
            player_y = 4
        elif grid[player_y][player_x] == 8:
            player_x = 5
            player_y = 2
    sr()
def sr():
    global result,grid,player_x,player_y
    if grid[player_y][player_x]==4:
        result=0
    else:
        for i in grid:
            if 2 in i:
                result=2
                break
        else:
            if ln==3:
                if grid[player_y][player_x] == 9: 
                    result = 1
            else:
                result=1
def nl():
    global result,ln,grid,player_x,player_y,width,height,origin_x,origin_y,size
    if result==1:
        ln+=1
    if ln>len(ls):
        print('恭喜你,消除了所有bug。(按r回到第一关)')
        return
    result=2
    grid=copy.deepcopy(ls[ln-1])
    width = len(grid[0])
    height = len(grid)
    origin_x = -(width-1) / 2 * size
    origin_y = (height-1) / 2 * size
    player_x =ps[ln-1][0]
    player_y =ps[ln-1][1]
def r():
    global result, ln, grid, player_x, player_y, width, height, origin_x, origin_y, size
    ln = 1
    result = 2
    grid = copy.deepcopy(ls[ln-1])
    width = len(grid[0])
    height = len(grid)
    origin_x = -(width-1) / 2 * size
    origin_y = (height-1) / 2 * size
    player_x = ps[ln-1][0]
    player_y = ps[ln-1][1]
# 3
turtle.onkey(move_up, 'Up')
turtle.onkey(move_down, 'Down')
turtle.onkey(move_left, 'Left')
turtle.onkey(move_right, 'Right')
turtle.onkey(nl, 'Return')
turtle.onkey(r,'r')
turtle.listen()
# 4
tile_shapes = ['空.gif', 'l.gif_new.gif', 
               '砖块29.gif',
               '砖块34.gif','窟窿.gif', 'a.gif.gif_new.gif', 
               'b.gif.gif_new.gif','c.gif.gif_new.gif',
               'd.gif.gif_new.gif','e.gif.gif_new.gif',]
for i in tile_shapes:
    turtle.addshape(i)
turtle.addshape('star.gif_new.gif')
rs=['失败.gif','成功.gif','空.gif']
for i in rs:
    turtle.addshape(i)
turtle.addshape('遮罩.gif')
# 5
p = turtle.Pen()
p.penup()
p.hideturtle()
turtle.tracer(False)
try:
    while True:
        p.clear()
        for i in range(width):
            for j in range(height):
                draw(p, tile_shapes[grid[j][i]], i, j)
        draw(p, 'star.gif_new.gif', player_x, player_y)
        draw(p,rs[result],(width-1)/2,(height-1)/2)
        if ln==3:
            draw(p,'遮罩.gif',player_x,player_y)
        turtle.update()
    turtle.done()
except:
    print('已退出')

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页