猫史档案馆


【Python】 省赛做的作品

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



center_image

image\1.png

center_image

image\2.png

center_image

image\3.png

center_imageimage\4.pngcenter_imageimage\maps\ground.png

center_image

image\maps\Easy\2.png

center_image

image\maps\Normal\1.png

center_image

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()


回复

上一页1 页 / 共 1下一页
函数Chara函数Chara

少了一个:image\Portal.png

 

center_image

点赞0


评论