import pygame
from sys import exit
import GuaiWuA
import Hero
import datetime
pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 定义窗体大小
pygame.display.set_caption('盛世再见') # 游戏名称
running = True # 游戏主循环标记
clock = pygame.time.Clock() # 定义帧数
# 顶
ding1 = pygame.draw.rect(screen,(99, 105, 20),(0, 20, 390,10)) # 绘制地图
ding2 = pygame.draw.rect(screen,(99, 105, 20),(410, 20, 390,10))
# 底
di1 = pygame.draw.rect(screen,(99, 105, 20),(0, 590, 390,10))
di2 = pygame.draw.rect(screen,(99, 105, 20),(410, 590, 390,10))
# 左
zuo1 = pygame.draw.rect(screen,(99, 105, 20),(0, 10, 10,280))
zuo2 = pygame.draw.rect(screen,(99, 105, 20),(0, 310, 10,280))
# 右
you1 = pygame.draw.rect(screen,(99, 105, 20),(790, 10, 10,280))
you2 = pygame.draw.rect(screen,(99, 105, 20),(790, 310, 10,290))
collidelist = [ding1,ding2,di1,di2,zuo1,zuo2,you1,you2]
hero = Hero.Hero(screen) # 创建英雄
i = 0 # 碰撞一次+1 # 怪物碰撞墙体次数
index = 0 # 怪物是否与墙体碰撞
guai = GuaiWuA.GuaiWuA(screen,0) # pygame.draw.rect(screen, (255, 255, 255), (400, 300, 10,10)) # 初始化一个怪
guaiList = [guai] #初始化怪list
pygame.event.set_allowed([pygame.KEYDOWN, pygame.KEYUP]) # 设置监听事件
gameOver = False # 游戏是否结束
starttime = datetime.datetime.now() # 计时
while running:
clock.tick(60) #设置帧数
for event in pygame.event.get(): # 事件队列
if event.type == pygame.QUIT: # 退出事件
exit(); # 退出程序
elif event.type == pygame.KEYDOWN or event.type == pygame.KEYUP: # 判断类型
hero.moveHero(event) # 移动英雄
hero.drawHero() # 绘制英雄至最新位置
for gx in guaiList: # 迭代怪物列表
pygame.draw.rect(screen, (0, 0, 0), gx.guai) # 覆盖前一路径的方形,将颜色设置成与背景一样
index = gx.guai.collidelist(collidelist) # 检测碰撞
if index != 0: # 大于-1代表碰撞
i += 1 # 碰撞次数+1
gx.setIndex(index) # 设置怪的移动轨迹
if (gx.flag): # 判断怪是否超出游戏窗口
idx = guaiList.index(gx) # 超出游戏窗口获取序列
guaiList.pop(idx) # 根据序列清除超出窗口的元素
if gx.collide(hero.hero): # 怪物英雄碰撞检测
i = -9 # 设置出怪索引为-9
gameOver = True # 游戏结束标记
hero.flag = False
if gameOver:
guaiList = [] # 清空怪物序列
else:
pygame.draw.rect(screen, (0, 0, 0), (20, 0, 60, 20))
endtime = datetime.datetime.now()
currentSeconds = (endtime - starttime).seconds
score_font = pygame.font.Font(None, 36)
score_text = score_font.render(str(currentSeconds), True, (128, 128, 128))
text_rect = score_text.get_rect()
text_rect.topleft = [20, 0]
screen.blit(score_text, text_rect)
if i % 8 == 0: # 怪碰撞8次墙体生成一个新的怪
guaiList.append(GuaiWuA.GuaiWuA(screen,0)) # 生成一个怪
pygame.display.update() # 刷新窗口
# pygame.display.flip()
python小游戏是男人坚持30秒
需积分: 17 36 浏览量
2018-02-07
10:20:09
上传
评论
收藏 8KB RAR 举报
aa80303857
- 粉丝: 43
- 资源: 21
最新资源
- Integrated-Energy-Systems-with-CAES-(注释完全,可直接运行)
- PDF为英语文本绘制热区(DEMO)
- 4.22.cpp
- 基于Transformer和Bert的close domain抽取式问答系统构建的智能聊天机器人项目源代码
- 基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(注释完全,可直接运行)(文档加Matlab源码)
- 2023各大软件技术峰会演进资料汇总(PPT),资料难得
- 基于混沌集成决策树的电能质量复合扰动识别(注释完全,可直接运行)(文档加Matlab源码)
- 航空公司如何成功实现数字化转型英文版.rar
- RTL8309N-8口交换机评估板Cadence设计硬件(原理图+PCB)及PDF原理图+RTL8309N技术规格书
- 基于JAVA的打飞机游戏设计(程序).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈