猫史档案馆


【pygame:Terrible maze】作品秀 Part1

用户:天上的流星_tianqiVirus天上的流星_tianqiVirus查看:6 回复:4 评论:6 创建时间:2019-07-25T10:36:43


python作品秀

用pygame开发的Scary maze的翻版 Part1

主代码部分

由于代码过度复杂,加上其他地方有私人机密和工作室机密,所以我只放出主代码

 

import pygame
from sys import exit
import rectClass
import openFile
import control
# import beginAnimation

windowW = 500
windowH = 500
windowSize=[windowW,windowH]
fps = 32
keepGoing = True
doingTime = 0

level = 0
deathTime = 0
movey = 0
movex = 0
auto = False

rectList=[]
rectOn = []
killerList = []
specialList = []

pygame.init()
screen = pygame.display.set_mode(windowSize)
pygame.display.set_caption("Terrible maze game")
pygame.display.set_icon(pygame.image.load(openFile.get_path()+"/image/icon/1.jpg"))
font = pygame.font.SysFont("Lucida Console",20)
clock =pygame.time.Clock()

deathData = openFile.openf()
print(deathData)
rectData = openFile.opens()
myData = openFile.opend()
finalData = openFile.opena()
specialData = openFile.openg()
myRect = rectClass.mainRect(myData[level][0],myData[level][1],myData[level][2])
finish = rectClass.finalRect(finalData[level][0],finalData[level][1],finalData[level][2],finalData[level][3],finalData[level][4])
for i in range(len(rectData[level])):
	rectList.append(rectClass.wayRect(rectData[level][i][0],rectData[level][i][1],rectData[level][i][2],rectData[level][i][3],rectData[level][i][4]))
for j in range(len(deathData[level])):
	killerList.append(rectClass.killerRect(deathData[level][j][0],deathData[level][j][1],deathData[level][j][2],deathData[level][j][3],deathData[level][j][4]))
for k in range(len(specialData[level])):
	specialList.append(rectClass.special(specialData[level][k][0],specialData[level][k][1],specialData[level][k][2]))

while keepGoing:

	screen.fill((0,0,0))
	doingTime+=1
	rectOn=[]

	deathTime_text = font.render(str(deathTime)+" deaths",True,(255,255,255))
	level_text = font.render("level "+str(level)+" of "+str(len(rectData)-1),True,(255,255,255))

	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			exit()

		if not auto:
			if event.type == pygame.KEYDOWN:
				movex,movey = control.notAuto(event)[0],control.notAuto(event)[1]
			if event.type == pygame.KEYUP:
				movex,movey = control.notAuto(event)[0],control.notAuto(event)[1]
		else:
			if event.type == pygame.KEYDOWN:
				movex,movey = control.notAuto(event)[0],control.notAuto(event)[1]

		if event.type == pygame.KEYUP:
			if event.key == pygame.K_n or event.key == pygame.K_b or event.key == pygame.K_r:
				if event.key == pygame.K_n and level<len(rectData)-1:
					level+=1
				elif event.key == pygame.K_b and level>=1:
					level-=1
				elif event.key == pygame.K_r:
					level = 0
					deathTime = 0
				auto = False
				rectList = []
				killerList = []
				specialList = []
				for i in range(len(rectData[level])):
					rectList.append(rectClass.wayRect(rectData[level][i][0],rectData[level][i][1],rectData[level][i][2],rectData[level][i][3],rectData[level][i][4]))
				myRect = rectClass.mainRect(myData[level][0],myData[level][1],myData[level][2])
				finish = rectClass.finalRect(finalData[level][0],finalData[level][1],finalData[level][2],finalData[level][3],finalData[level][4])
				for j in range(len(deathData[level])):
					killerList.append(rectClass.killerRect(deathData[level][j][0],deathData[level][j][1],deathData[level][j][2],deathData[level][j][3],deathData[level][j][4]))
				for k in range(len(specialData[level])):
					specialList.append(rectClass.special(specialData[level][k][0],specialData[level][k][1],specialData[level][k][2]))

			if event.key == pygame.K_h:
					control.controlHelp(screen,font)

	myRect.x+=movex
	myRect.y+=movey
	
	myRect.rectUpdate()
	for j in range(len(rectList)):
		rectList[j].rectShow(screen)
		rectOn.append(rectList[j].rectUpdate(myRect.rect))

	for k in range(len(killerList)):
		killerList[k].rectShow(screen)
		if killerList[k].rectUpdate(myRect.rect):
			deathTime+=1
			auto = False
			myRect.rectCrush(myData[level][0],myData[level][1],myData[level][2])

	for l in range(len(specialList)):
		specialList[l].rectShow(screen)
		if specialList[l].rectUpdate(myRect):
			auto = True


	if finish.rectUpdate(myRect.rect):
		level+=1
		auto = False
		rectList = []
		killerList = []
		specialList = []
		for i in range(len(rectData[level])):
			rectList.append(rectClass.wayRect(rectData[level][i][0],rectData[level][i][1],rectData[level][i][2],rectData[level][i][3],rectData[level][i][4]))
		myRect = rectClass.mainRect(myData[level][0],myData[level][1],myData[level][2])
		finish = rectClass.finalRect(finalData[level][0],finalData[level][1],finalData[level][2],finalData[level][3],finalData[level][4])
		for j in range(len(deathData[level])):
			killerList.append(rectClass.killerRect(deathData[level][j][0],deathData[level][j][1],deathData[level][j][2],deathData[level][j][3],deathData[level][j][4]))
		for k in range(len(specialData[level])):
			specialList.append(rectClass.special(specialData[level][k][0],specialData[level][k][1],specialData[level][k][2]))
	
	if not 1 in rectOn and not finish.rectUpdate(myRect.rect):
		myRect.rectCrush(myData[level][0],myData[level][1],myData[level][2])
		deathTime+=1
		auto = False

	if level == 3:
		rectList[-1].showImage(screen,pygame.image.load("image/flower-3.jpg"))
	if level == 4:
		screen.blit(pygame.transform.喵oothscale(pygame.image.load("image/warning-4-new.png"),(380,380)),(60,60))
	if level == 0:
		screen.blit(pygame.transform.喵oothscale(pygame.image.load("image/title.png"),(450,75)),(25,25))

	screen.blit(deathTime_text,(windowW - deathTime_text.get_rect().width,478))
	screen.blit(level_text,(windowW - level_text.get_rect().width,455))
	screen.blit(font.render("Press H to get help.",True,(255,255,255)),(5,478))
	finish.rectShow(screen)
	myRect.rectShow(screen)

	pygame.display.update()
	clock.tick(60)

pygame.quit()

代码运行效果

center_image

written by : 天上的流星

本帖内的所有代码,思想仅供参考,请勿用于商业或盈利用途


回复

上一页1 页 / 共 1下一页
Rougemare初染聊高数Rougemare初染聊高数

小鹿工作室的技术担当吧

点赞0


评论


Rougemare初染聊高数Rougemare初染聊高数

编辑器用的哪个?

点赞0


评论


银天X银天X

大佬你用了多久写完它的

点赞0


评论


超能喵超能喵

喵皮加梅

从系统导入退出

导入RectClass

导入OpenFile

导入控制

#导入起始值

 

窗口w=500

窗口H=500

windowsize=[窗口w,窗口h]

fps=32秒

keepgoing=真

doingtime=0

 

级别=0

喵亡时间=0

移动=0

移动X=0

自动=假

 

rectlist=[]

Recton=[]

杀人犯=[]

特殊列表=[]

 

pygame.init()。

screen=pygame.display.set_模式(windowsize)

pygame.display.set_caption(“可怕的迷宫游戏”)

pygame.display.set_icon(pygame.image.load(openfile.get_path()+“/image/icon/1.jpg”))

FONT=pygame.FONT.sysFONT(“Lucida控制台”,20)

clock=pygame.time.clock()。

 

deathdata=openfile.openf()。

打印(喵亡数据)

rectdata=openfile.opens()。

mydata=openfile.opend()。

finaldata=openfile.opena()。

特殊数据=openfile.openg()

myect=rectclass.mainrect(mydata[level][0],mydata[level][1],mydata[level][2])

finish=rectClass.finalRect(finalData[Level][0]、finalData[Level][1]、finalData[Level][2]、finalData[Level][3]、finalData[Level][4])

对于范围内的i(len(rectdata[级别]):

rectlist.append(rectclass.wayrect(rectdata[level][i][0]、rectdata[level][i][1]、rectdata[level][i][2]、rectdata[level][i][3]、rectdata[level][i][4]))

对于范围内的j(len(喵亡数据[级别]):

killerlist.append(rectclass.killerrect(喵亡数据[level][j][0]、喵亡数据[level][j][1]、喵亡数据[level][j][2]、喵亡数据[level][j][3]、喵亡数据[level][j][4]))

对于范围(len(specialdata[级别])中的k:

speciallist.append(rectclass.special(specialdata[level][k][0]、specialdata[level][k][1]、specialdata[level][k][2]))

 

保持时:

 

屏幕填充((0,0,0))

doingtime+=1

Recton=[]

 

deathtime_text=font.render(str(deathtime)+“deaths”,真,(255255255))

level_text=font.render(“level”+str(level)+“of”+str(len(rectdata)-1),true,(255255255))

 

对于pygame.event.get()中的事件:

如果event.type==pygame.quit:

退出()

 

如果不是自动:

如果event.type==pygame.keydown:

movex,movey=control.notauto(事件)[0],control.notauto(事件)[1]

如果event.type==pygame.keyup:

movex,movey=control.notauto(事件)[0],control.notauto(事件)[1]

其他:

如果event.type==pygame.keydown:

movex,movey=control.notauto(事件)[0],control.notauto(事件)[1]

 

如果event.type==pygame.keyup:

如果event.key==pygame.k_n或event.key==pygame.k_b或event.key==pygame.k_r:

如果event.key==pygame.k_n and level<len(rectdata)-1:

级别+=1

elif event.key==pygame.k_b和level>=1:

级别-=1

elif event.key==pygame.k_r:

级别=0

喵亡时间=0

自动=假

rectlist=[]

杀人犯=[]

特殊列表=[]

对于范围内的i(len(rectdata[级别]):

rectlist.append(rectclass.wayrect(rectdata[level][i][0]、rectdata[level][i][1]、rectdata[level][i][2]、rectdata[level][i][3]、rectdata[level][i][4]))

myect=rectclass.mainrect(mydata[level][0],mydata[level][1],mydata[level][2])

finish=rectClass.finalRect(finalData[Level][0]、finalData[Level][1]、finalData[Level][2]、finalData[Level][3]、finalData[Level][4])

对于范围内的j(len(喵亡数据[级别]):

killerlist.append(rectclass.killerrect(喵亡数据[level][j][0]、喵亡数据[level][j][1]、喵亡数据[level][j][2]、喵亡数据[level][j][3]、喵亡数据[level][j][4]))

对于范围(len(specialdata[级别])中的k:

speciallist.append(rectclass.special(specialdata[level][k][0]、specialdata[level][k][1]、specialdata[level][k][2]))

 

如果event.key==pygame.k_h:

control.controlHelp(屏幕,字体)

 

myect.x+=移动x

Y+=移动

 

MyRect.RectUpdate()。

对于范围内的j(len(rectlist)):

rectlist[j].rectshow(屏幕)

recton.append(rectlist[j].rectupdate(myrect.rect))。

 

对于范围内的k(len(killerlist)):

杀手列表[K].rectshow(屏幕)

如果killerlist[k].rectupdate(myrect.rect):

喵亡时间+=1

自动=假

myect.rectcrush(mydata[级别][0]、mydata[级别][1]、mydata[级别][2])

 

对于范围内的L(len(speciallist)):

特殊列表[L].RectShow(屏幕)

如果SpecialList[L].RectUpdate(MyRect):

自动=真

 


如果完成.rectupdate(myrect.rect):

级别+=1

自动=假

rectlist=[]

杀人犯=[]

特殊列表=[]

对于范围内的i(len(rectdata[级别]):

rectlist.append(rectclass.wayrect(rectdata[level][i][0]、rectdata[level][i][1]、rectdata[level][i][2]、rectdata[level][i][3]、rectdata[level][i][4]))

myect=rectclass.mainrect(mydata[level][0],mydata[level][1],mydata[level][2])

finish=rectClass.finalRect(finalData[Level][0]、finalData[Level][1]、finalData[Level][2]、finalData[Level][3]、finalData[Level][4])

对于范围内的j(len(喵亡数据[级别]):

killerlist.append(rectclass.killerrect(喵亡数据[level][j][0]、喵亡数据[level][j][1]、喵亡数据[level][j][2]、喵亡数据[level][j][3]、喵亡数据[level][j][4]))

对于范围(len(specialdata[级别])中的k:

speciallist.append(rectclass.special(specialdata[level][k][0]、specialdata[level][k][1]、specialdata[level][k][2]))

 

如果recton中没有1,则不完成。rectupdate(myrect.rect):

myect.rectcrush(mydata[级别][0]、mydata[级别][1]、mydata[级别][2])

喵亡时间+=1

自动=假

 

如果水平==3:

rectlist[-1].显示图像

 

翻译看看

点赞0


评论