如何使用python制作下楼小游戏
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章给大家分享的是有关如何使用python制作下楼小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言先给大家看看效果图部分代码如下:import pygameim
千家信息网最后更新 2025年12月04日如何使用python制作下楼小游戏
这篇文章给大家分享的是有关如何使用python制作下楼小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
前言
先给大家看看效果图
部分代码如下:
import pygameimport gamefrom random import choice, randintSCORE = 0SOLID = 1FRAGILE = 2DEADLY = 3BELT_LEFT = 4BELT_RIGHT = 5BODY = 6GAME_ROW = 40GAME_COL = 28OBS_WIDTH = GAME_COL // 4SIDE = 13SCREEN_WIDTH = SIDE*GAME_COLSCREEN_HEIGHT = SIDE*GAME_ROWCOLOR = {SOLID: 0x00ffff, FRAGILE: 0xff5500, DEADLY: 0xff2222, SCORE: 0xcccccc, BELT_LEFT: 0xffff44, BELT_RIGHT: 0xff99ff, BODY: 0x00ff00}CHOICE = [SOLID, SOLID, SOLID, FRAGILE, FRAGILE, BELT_LEFT, BELT_RIGHT, DEADLY]class Barrier(object): def __init__(self, screen, opt=None): self.screen = screen if opt is None: self.type = choice(CHOICE) else: self.type = opt self.frag_touch = False self.frag_time = 12 self.score = False self.belt_dire = 0 self.belt_dire = pygame.K_LEFT if self.type == BELT_LEFT else pygame.K_RIGHT left = randint(0, SCREEN_WIDTH - 7 * SIDE - 1) top = SCREEN_HEIGHT - SIDE - 1 self.rect = pygame.Rect(left, top, 7*SIDE, SIDE) def rise(self): if self.frag_touch: self.frag_time -= 1 if self.frag_time == 0: return False self.rect.top -= 2 return self.rect.top >= 0 def draw_side(self, x, y): if self.type == SOLID: rect = pygame.Rect(x, y, SIDE, SIDE) self.screen.fill(COLOR[SOLID], rect) elif self.type == FRAGILE: rect = pygame.Rect(x+2, y, SIDE-4, SIDE) self.screen.fill(COLOR[FRAGILE], rect) elif self.type == BELT_LEFT or self.type == BELT_RIGHT: rect = pygame.Rect(x, y, SIDE, SIDE) pygame.draw.circle(self.screen, COLOR[self.type], rect.center, SIDE // 2 + 1) elif self.type == DEADLY: p1 = (x + SIDE//2 + 1, y) p2 = (x, y + SIDE) p3 = (x + SIDE, y + SIDE) points = [p1, p2, p3] pygame.draw.polygon(self.screen, COLOR[DEADLY], points) def draw(self): for i in range(7): self.draw_side(i*SIDE+self.rect.left, self.rect.top)class Hell(game.Game): def __init__(self, title, size, fps=60): super(Hell, self).__init__(title, size, fps) self.last = 6 * SIDE self.dire = 0 self.barrier = [Barrier(self.screen, SOLID)] self.body = pygame.Rect(self.barrier[0].rect.center[0], 200, SIDE, SIDE) self.bind_key([pygame.K_LEFT, pygame.K_RIGHT], self.move) self.bind_key_up([pygame.K_LEFT, pygame.K_RIGHT], self.unmove) self.bind_key(pygame.K_SPACE, self.pause) def move(self, key): self.dire = key def unmove(self, key): self.dire = 0 def show_end(self): self.draw(0, end=True) self.end = True def move_man(self, dire): if dire == 0: return True rect = self.body.copy() if dire == pygame.K_LEFT: rect.left -= 1 else: rect.left += 1 if rect.left < 0 or rect.left + SIDE >= SCREEN_WIDTH: return False for ba in self.barrier: if rect.colliderect(ba.rect): return False self.body = rect return True def get_score(self, ba): if self.body.top > ba.rect.top and not ba.score: self.score += 1 ba.score = True def to_hell(self): self.body.top += 2 for ba in self.barrier: if not self.body.colliderect(ba.rect): self.get_score(ba) continue if ba.type == DEADLY: self.show_end() return self.body.top = ba.rect.top - SIDE - 2 if ba.type == FRAGILE: ba.frag_touch = True elif ba.type == BELT_LEFT or ba.type == BELT_RIGHT: # self.body.left += ba.belt_dire self.move_man(ba.belt_dire) break top = self.body.top if top < 0 or top+SIDE >= SCREEN_HEIGHT: self.show_end() def create_barrier(self): solid = list(filter(lambda ba: ba.type == SOLID, self.barrier)) if len(solid) < 1: self.barrier.append(Barrier(self.screen, SOLID)) else: self.barrier.append(Barrier(self.screen)) self.last = randint(3, 5) * SIDE def update(self, current_time): if self.end or self.is_pause: return self.last -= 1 if self.last == 0: self.create_barrier() for ba in self.barrier: if not ba.rise(): if ba.type == FRAGILE and ba.rect.top > 0: self.score += 1 self.barrier.remove(ba) self.move_man(self.dire) self.move_man(self.dire) self.to_hell() def draw(self, current_time, end=False): if self.end or self.is_pause: return self.screen.fill(0x000000) self.draw_score((0x3c, 0x3c, 0x3c)) for ba in self.barrier: ba.draw() if not end: self.screen.fill(COLOR[BODY], self.body) else: self.screen.fill(COLOR[DEADLY], self.body) pygame.display.update()if __name__ == '__main__': print(''' Welcome to To Hell with Memory! press LEFT and RIGHT arrow key to play game. press SPACE to pause. ''') hell = Hell("是男人就下一百层", (SCREEN_WIDTH, SCREEN_HEIGHT)) hell.run()感谢各位的阅读!关于"如何使用python制作下楼小游戏"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
小游戏
制作
内容
更多
篇文章
不错
实用
代码
前言
效果
效果图
文章
男人
看吧
知识
部分
参考
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苏州犀牛互联网科技有限
青岛微风吹动网络技术有限公司
戴尔服务器插内存顺序
广州散发思维网络技术有限公司
饥荒怎么输代码进服务器
帝防录像机远程服务器有问题了吗
网络安全网络舆情班会
pacs服务器硬件配置
上海博顼网络技术有限公司
网络安全教育发言稿400字
知识元建模用什么数据库
赛盟服务器ip
英雄联盟手游服务器登陆
服务器ppm模块
存储在电脑里的数据算数据库吗
南瑞用电分公司软件开发
贵州省地级市数据库
云数据库对接
vs2013 数据库
服务器为什么登录不了
王者可转移的服务器只有一个
samp服务器ip
手机如何请求连接服务器终端
学软件开发挺好就是头有点凉
深圳云软件开发
网络安全战略卢森堡
软件开发重大技术更新
16核32g云服务器每年多少钱
香山杯网络安全大赛 wp
云数据库对接