用户:天上的流星_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()
代码运行效果
written by : 天上的流星
本帖内的所有代码,思想仅供参考,请勿用于商业或盈利用途
超能喵喵皮加梅
从系统导入退出
导入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
评论