猫史档案馆


【Python作品分享】推箱子-变量准备【教程贴】

用户:春娇Vicky春娇Vicky查看:0 回复:1 评论:0 创建时间:2021-06-17T17:42:10


【作品展示】

center_image

 

【作品介绍】

先看变量有哪些吧!

 

【作品源代码】

import random,sys,copy,os,pygame


from pygame.locals import *

FPS = 30
WINWIDTH = 800
WINHEIGHT = 600
HALF_WINWIDTH = int((WINWIDTH / 2))
HALF_WINHEIGHT = int((WINHEIGHT / 2))

TILEWIDTH = 50
TILEHEIGHT = 85
TILEFLOORHEIGHT = 40

CAN_MOVE_SPEED = 5

outside_decaration_pct = 20

brightblue = (  0,170,255)
white = (255,255,255)
bgcolor = brightblue
textcolor = white
# 数组,是变量可以用到的。

up = 'up'
down = 'down'
left = 'left'
right = 'right'

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
我需要复制粘贴我需要复制粘贴

#导入模块
from pygame import *
from sys import *
#初始化
init()
font.init()
#显示窗口
screen=display.set_mode((400,400))
#显示标题
display.set_caption("推箱子")
#设置地图坐标
x=0
y=0
#背景颜色
screen.fill((255,255,255))
#设置地图
map1=[]
#循环变量
i=0
#调整地图
for a in range(8):
    for a in range(8):
        map1.append(0)
for a in range(8):
    map1[i]=10
    i+=1
i=len(map1)-1
for a in range(8):
    map1[i]=10
    i-=1
i=8
for a in range(6):
    map1[i]=10
    i+=8
i=15
for a in range(6):
    map1[i]=10
    i+=8
map1[0]=0
map1[1]=0
map1[9]=10
map1[10]=10
map1[63]=0
map1[62]=0
map1[54]=10
map1[53]=10
map1[13]=4
map1[44]=5
map1[12]=6
map1[43]=7
map1[49]=1
i=0
k=49#人的编号
d=44#箱子1的编号
o=13#箱子2的编号
while True:#喵循环
    for a in event.get():
        if a.type==QUIT:
            #退出窗口
            quit()
            exit()
        #移动人,箱子
        elif a.type == KEYDOWN: #键被按下
                if a.key == K_LEFT:
                    if map1[k-1]==5 and map1[d-1]!=10 and map1[d-8]!=4:
                         map1[k]=0
                         k-=1
                         map1[d]=1
                         d-=1
                         map1[d]=5
                    if map1[k-1]==4 and map1[o-1]!=10 and map1[d-8]!=5:
                         map1[k]=0
                         k-=1
                         map1[o]=1
                         o-=1
                         map1[o]=4
                    if map1[k-1]!=10 and map1[k-1]!=5 and map1[k-1]!=4:
                        map1[k]=0
                        k-=1
                        map1[k]=1
                elif a.key == K_RIGHT:
                    if map1[k+1]==5 and map1[d+1]!=10 and map1[d-8]!=4:
                         map1[k]=0
                         k+=1
                         map1[d]=1
                         d+=1
                         map1[d]=5
                    if map1[k+1]==4 and map1[o+1]!=10 and map1[d-8]!=5:
                         map1[k]=0
                         k+=1
                         map1[o]=1
                         o+=1
                         map1[o]=4
                    if map1[k+1]!=10 and map1[k+1]!=5 and map1[k-8]!=5:
                        map1[k]=0
                        k+=1
                        map1[k]=1
                elif a.key == K_UP:
                    #判断上面是否有箱子,箱子上面是否是墙
                    #因为图层问题,界面上多显示出一个箱子
                    if map1[k-8]==5 and map1[d-8]!=10 and map1[d-8]!=4:
                         map1[k]=0
                         k-=8
                         map1[d]=1
                         d-=8
                         map1[d]=5
                    if map1[k-8]==4 and map1[o-8]!=10 and map1[d-8]!=5:
                         map1[k]=0
                         k-=8
                         map1[o]=1
                         o-=8
                         map1[o]=4
                    if map1[k-8]!=10 and map1[k-8]!=5 and map1[k-8]!=4 :
                         map1[k]=0
                         k-=8
                         map1[k]=1
                         
                         
                elif a.key == K_DOWN:
                    if map1[k+8]==5 and map1[d+8]!=10 and map1[d-8]!=4:
                         map1[k]=0
                         k+=8
                         map1[d]=1
                         d+=8
                         map1[d]=5
                    if map1[k+8]==4 and map1[o+8]!=10 and map1[d-8]!=5:
                         map1[k]=0
                         k+=8
                         map1[o]=1
                         o+=8
                         map1[o]=4
                    if map1[k+8]!=10 and map1[k+8]!=5 and map1[k-8]!=5:
                        map1[k]=0
                        k+=8
                        map1[k]=1
    #显示地图
    for a in range(8):
        for a in range(8):
            if map1[i]==10:
                draw.rect(screen,(196,74,86),(x,y,50,50),0)
                draw.rect(screen,(0,0,0),(x,y,50,50),5)
            if map1[i]==5:
                draw.rect(screen,(219,182,125),(x,y,50,50),0)
                draw.rect(screen,(0,0,0),(x,y,50,50),5)
            if map1[i]==4:
                draw.rect(screen,(219,182,125),(x,y,50,50),0)
                draw.rect(screen,(0,0,0),(x,y,50,50),5)
            if map1[i]==1:
                draw.circle(screen,(55,162,212),(x+20,y+20),20,0)
                draw.circle(screen,(0,0,0),(x+20,y+20),20,5)
            if map1[i]==6:
                draw.rect(screen,(0,212,101),(x,y,30,30),0)
                draw.rect(screen,(0,0,0),(x,y,30,30),5)
            if map1[i]==7:
                draw.rect(screen,(0,212,101),(x,y,30,30),0)
                draw.rect(screen,(0,0,0),(x,y,30,30),5)
            if map1[i]==0:
                draw.rect(screen,(255,255,255),(x,y,50,50),0)
            if map1[12]==0:
                draw.rect(screen,(0,212,101),(200,60,30,30),0)
                draw.rect(screen,(0,0,0),(200,60,30,30),5)
            if map1[43]==0:
                draw.rect(screen,(0,212,101),(200-30,300-30,30,30),0)
                draw.rect(screen,(0,0,0),(200-30,300-30,30,30),5)
            i+=1
            x+=50
        x=0
        y+=50
    if (map1[12]==4 and map1[43]==4) or (map1[12]==5 and map1[43]==5) or (map1[12]==5 and map1[43]==4) or (map1[12]==4 and map1[43]==5):
        font1=font.SysFont('方正喵宋简体',50)
        font2=font1.render('恭喜你,闯关成功!',1,(0,0,0))
        screen.blit(font2,(0,200))
    i=0
    x=0
    y=0
    #刷新
    display.flip()

点赞0


评论