用户:函数Chara查看:0 回复:1 评论:0 创建时间:2021-09-21T13:24:58

image\1.png

image\2.png

image\3.png
image\4.png
image\maps\ground.png

image\maps\Easy\2.png

image\maps\Normal\1.png

image\maps\Hard\1.png
源代码(pygame,easygui)
from copy import copy
import pygame
from pygame import *
from pygame.locals import *
from easygui import ynbox,msgbox
def story():
msgbox("在遥远的森林迷宫里。有一份神秘的宝藏。")
msgbox("你为了那份宝藏,来到了被封为禁区的\r\t森林公园")
def game_ready():
global bg_E1,bg_N1,bg_H1,bg_N2,bg_H2,bg_L,bg_M,NeL,Nrect,Floor
mpath="image\\maps\\{}\\{}"
gpath="image\\{}"
bg_E1=image.load(mpath.format("Easy","2.png"))
bg_N1=image.load(mpath.format("Normal","1.png"))
bg_H2=image.load(mpath.format("Hard","1.png"))
bg_M=[
pygame.mask.from_surface(bg_E1),
pygame.mask.from_surface(bg_N1),
pygame.mask.from_surface(bg_H2)
]
Floor = image.load(gpath.format("maps\\ground.png"))
NeL=transform.喵oothscale(image.load(gpath.format("Portal.png")),(50,100))
Nrect=NeL.get_rect()
Nrect.top,Nrect.left=850,900
bg_L=[bg_E1,bg_N1,bg_H2]
class player(sprite.Sprite):
def __init__(self,pos):
sprite.Sprite.__init__(self)
self.i_list=[
image.load("image\\1.png"),
image.load("image\\2.png"),
image.load("image\\3.png"),
image.load("image\\4.png")
]
self.image=self.i_list[0] #>^<v
self.speed = 4
self.rect=self.image.get_rect()
self.rect.left,self.rect.top=copy(pos)
self.XofM,self.YofM=copy(pos)
self.mask=mask.from_surface(self.image)
self.angle=90
for i in self.i_list:
colorkey = i.get_at((0, 0))
i.set_colorkey(colorkey)
def update(self):
pass
def lose(self):
self.rect.x=70
self.rect.y=70
msgbox("诶呀,看来你撞到墙了呢!")
def right(self):
self.rect.x+=self.speed
self.image=self.i_list[0]
def left(self):
self.rect.x-=self.speed
self.image=self.i_list[2]
def up(self):
self.rect.y-=self.speed
self.image=self.i_list[1]
def down(self):
self.rect.y+=self.speed
self.image=self.i_list[3]
def ad_speed(self):
self.speed += 1
def start():
global wtq
keep=True
wtq=False
win=False
pr=False
pl=False
pu=False
pd=False
screen=display.set_mode([1000,1000])
Plr=player((70,70))
PlaMask=mask.from_surface(Plr.image)
clock=time.Clock()
Level=0
display.set_caption("迷宫")
game_ready()
while keep:
for e in event.get():
if e.type==QUIT:
wtq=True
if e.type==KEYDOWN:
keys=key.get_pressed()
if keys[K_RIGHT]:
pr=True
Plr.right()
if keys[K_LEFT]:
pl=True
Plr.left()
if keys[K_UP]:
pu=True
Plr.up()
if keys[K_DOWN]:
pd=True
Plr.down()
if keys[K_PLUS]:
Plr.ad_speed()
if keys[K_SPACE]:
if Level<2:
Level+=1
Plr=player((70,70))
else:
win=True
if e.type==KEYUP:
keys=key.get_pressed()
if not (keys[K_RIGHT]):
pr=False
if not (keys[K_LEFT]):
pl=False
if not (keys[K_UP]):
pu=False
if not (keys[K_DOWN]):
pd=False
if wtq:
keep=not (ynbox("确定退出吗?"))
if pr:
Plr.right()
if pl:
Plr.left()
if pu:
Plr.up()
if pd:
Plr.down()
screen.fi喵))
nmap=bg_L[Level]
nmas=bg_M[Level]
screen.blit(Floor,(0, 0))
screen.blit(Plr.image,Plr.rect)
screen.blit(nmap,(0,0))
screen.blit(NeL,(Nrect.x,Nrect.y))
#print(Plr.rect.x,Plr.rect.y)
if nmas.get_at((Plr.rect.x+3,Plr.rect.y+7)) == 1 or nmas.get_at((Plr.rect.x+22,Plr.rect.y+7)) == 1\
or nmas.get_at((Plr.rect.x+3,Plr.rect.y+18)) == 1 or nmas.get_at((Plr.rect.x+22,Plr.rect.y+18)) == 1:
Plr.lose()
if Plr.rect.colliderect(Nrect):
if Level<2:
Level+=1
Plr=player((70,70))
else:
win=True
if win:
msgbox("你成功了!,你找到了宝藏!")
keep=False
display.update()
clock.tick(200)
if __name__=="__main__":
init()
story()
start()
quit()