您现在的位置是:首页 > 网络趣梗网络趣梗

打砖块 游戏(打砖块小游戏免费下载)

2022-08-23 20:10:59网络趣梗0人已围观

简介  打砖块 游戏(打砖块小游戏免费下载),新营销网红网本栏目通过数据整理汇集了打砖块 游戏(打砖块小游戏免费下载)相关信息,下面一起看看

  打砖块 游戏(打砖块小游戏免费下载),新营销网红网本栏目通过数据整理汇集了打砖块 游戏(打砖块小游戏免费下载)相关信息,下面一起看看。

  介绍

  嘿!不久前,我刚刚给了你一个弹跳球的小游戏!

  我不知道。你还记得吗?不记得可以看看前一期的内容。我在前期的基础上升级了这个大转小游。

  玩起来,界面挺简洁的,经典配色都是原创,哈哈哈。

  大家好,我是网上编程下大厅女码农木木子!今天就带大家写一个经典的打砖游戏!

  小科普:

  打砖块是雅达利最早开发的独立游戏,也是无数人的童年记忆。

  在谷歌图片中搜索“雅达利突围”,搜索结果会变成这款游戏。把所有的砖块

  所有的关卡都被清除后,你就可以进入下一个挑战了。

  你也可以试试哈哈哈~希望给你介绍更多程序员的知识!

  主体

  一.准备工作

   1)游戏规则:

  在所有砖块被清除后,我们可以进入下一个挑战。

  初始化每个玩家有2次机会。打完所有的砖就可以赢了,否则失败的游戏就过不去了!

   (很少有关卡素材,背景音乐等。并且不显示所需的主页源代码库。见哈)

   2)环境安装

  本文使用的环境:Python3,Pycharm,Pygame模块以及其中的一部分都包含在内。

  环境:pip安装-I/模块名称

  其次,开始输入代码。

   1)配置文件

  导入OS游戏界面的一些数值屏幕宽度=640屏幕高度=480砖宽=10砖高=10桨宽=60桨高=12球半径=8游戏素材路径font path=OS . path . join(OS . getcwd(),resources/font/font。TTF)HITSOUNDPATH=OS . path . join(OS . getcwd()、Resources/audios/hit . wav)bgm path=OS . path . join(OS . getcwd()、Resources/audios/bgm . MP3)LEVELROOTPATH=OS . path . join(OS . getcwd()、Resources/levels)level paths=[OS . path . join(level root path,% s . level % str(I 1))for I in range(len(OS . listdir(level root path))]部分颜色黑色=(0,0,0

   2)定义一些类。

  导入randomimport pygame棋盘类paddle(py game . sprite . sprite): def _ _ init _ _(self,x,y,width,height,screen width,screen height,* * kwargs): py game . sprite . sprite . _ _ init _ _(self)self . init _ state=[x,y,width,height] self.rect=pygame。Rect(x,y,宽度,高度)self。base _ speed=10self。屏幕宽度=屏幕宽度本身。screenheight=screenheight移动棋盘def move(self,direction): if direction==left : self . rect . left=max(0,self . rect . left-self . base _ speed)elif direction==right : self . rect . right=min(self。SCREENWIDTH,self . rect . right self . base _ speed)Else :提升值错误(paddle.move.direction不支持% s.% direction)返回true绑定到def draw(self,Screen,color)3360 py game . draw . rect(Screen,color,self.rect)返回True重置def reset(self)3360 Self . rect=py game . rect(Self . init _ state[0],Self。init _ state [1],自我。init _ state [2],自我。init _ state [3])返回true ball class ball(py game . sprite . sprite)3360 def _ _ init _ _(self,x,y,radius,SCREENWIDTH,SCREENHEIGHT,**kwargs): pygame.sprite.S

  prite.__init__(self) self.init_state = [x, y, radius*2, radius*2] self.rect = pygame.Rect(x, y, radius*2, radius*2) self.base_speed = [5, 5] self.direction = [random.choice([1, -1]), -1] self.radius = radius self.SCREENWIDTH = SCREENWIDTH self.SCREENHEIGHT = SCREENHEIGHT 移动球 def move(self): self.rect.left += self.direction[0] * self.base_speed[0] self.rect.top += self.direction[1] * self.base_speed[1] if self.rect.left = 0: self.rect.left = 0 self.direction[0] = -self.direction[0] elif self.rect.right = self.SCREENWIDTH: self.rect.right = self.SCREENWIDTH self.direction[0] = -self.direction[0] if self.rect.top = 0: self.rect.top = 0 self.direction[1] = -self.direction[1] elif self.rect.bottom = self.SCREENHEIGHT: return False return True 改变运动速度和方向(与拍相撞时) def change(self): self.base_speed = [random.choice([4, 5, 6]), random.choice([4, 5, 6])] self.direction = [random.choice([1, -1]), -1] return True 绑定到屏幕上 def draw(self, screen, color): pygame.draw.circle(screen, color, (self.rect.left+self.radius, self.rect.top+self.radius), self.radius) return True 重置 def reset(self): self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3]) return True 砖块 class Brick(pygame.sprite.Sprite): def __init__(self, x, y, width, height, **kwargs): pygame.sprite.Sprite.__init__(self) self.init_state = [x, y, width, height] self.rect = pygame.Rect(x, y, width, height) 绑定到屏幕上 def draw(self, screen, color): pygame.draw.rect(screen, color, self.rect) return True 重置 def reset(self): self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3]) return True

  3)定义开始、结束界面

   开始界面 def __startInterface(self): clock = pygame.time.Clock() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() sys.exit(-1) if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN: return self.screen.fill(self.cfg.AQUA) text1 = Press Enter to start the game text2 = Press Esc to quit the game text_render1 = self.font_big.render(text1, False, self.cfg.BLUE) text_render2 = self.font_big.render(text2, False, self.cfg.BLUE) self.screen.blit(text_render1, ((self.cfg.SCREENWIDTH-text_render1.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render1.get_rect().height)//4)) self.screen.blit(text_render2, ((self.cfg.SCREENWIDTH-text_render2.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render2.get_rect().height)//2)) pygame.display.flip() clock.tick(30) 结束界面 def __endInterface(self, is_win): if is_win: text1 = Congratulations! You win! else: text1 = Game Over! You fail! text2 = Press R to restart the game text3 = Press Esc to quit the game. clock = pygame.time.Clock() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() sys.exit(-1) if event.type == pygame.KEYDOWN and event.key == pygame.K_r: return self.screen.fill(self.cfg.AQUA) text_render1 = self.font_big.render(text1, False, self.cfg.BLUE) text_render2 = self.font_big.render(text2, False, self.cfg.BLUE) text_render3 = self.font_big.render(text3, False, self.cfg.BLUE) self.screen.blit(text_render1, ((self.cfg.SCREENWIDTH-text_render1.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render1.get_rect().height)//4)) self.screen.blit(text_render2, ((self.cfg.SCREENWIDTH-text_render2.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render2.get_rect().height)//2)) self.screen.blit(text_render3, ((self.cfg.SCREENWIDTH-text_render3.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render2.get_rect().height)//1.5)) pygame.display.flip() clock.tick(30)

  4)定义游戏

   打砖块游戏 class breakoutClone(): def __init__(self, cfg, **kwargs): pygame.init() pygame.display.set_caption( Breakout clone ) pygame.mixer.init() self.screen = pygame.display.set_mode((cfg.SCREENWIDTH, cfg.SCREENHEIGHT)) self.font_ all = pygame.font.Font(cfg.FONTPATH, 20) self.font_big = pygame.font.Font(cfg.FONTPATH, 30) self.hit_sound = pygame.mixer.Sound(cfg.HITSOUNDPATH) pygame.mixer.music.load(cfg.BGMPATH) pygame.mixer.music.play(-1, 0.0) self.cfg = cfg 运行游戏 def run(self): while True: self.__startInterface() for idx, levelpath in enumerate(self.cfg.LEVELPATHS): state = self.__runLevel(levelpath) if idx == len(self.cfg.LEVELPATHS)-1: break if state == win : self.__nextLevel() else: break if state == fail : self.__endInterface(False) else: self.__endInterface(True) 运行某关卡 def __runLevel(self, levelpath): score = 0 num_lives = 2 # running: 游戏正在进行, fail: 游戏失败, win: 游戏成功. state = running paddle = Paddle((self.cfg.SCREENWIDTH-self.cfg.PADDLEWIDTH)/2, self.cfg.SCREENHEIGHT-self.cfg.PADDLEHEIGHT-10, self.cfg.PADDLEWIDTH, self.cfg.PADDLEHEIGHT, self.cfg.SCREENWIDTH, self.cfg.SCREENHEIGHT) ball = Ball(paddle.rect.centerx-self.cfg.BALLRADIUS, paddle.rect.top-self.cfg.BALLRADIUS*2, self.cfg.BALLRADIUS, self.cfg.SCREENWIDTH, self.cfg.SCREENHEIGHT) brick_sprites = pygame.sprite.Group() brick_positions = loadLevel(levelpath) for bp in brick_positions: brick_sprites.add(Brick(bp[0]*self.cfg.BRICKWIDTH, bp[1]*self.cfg.BRICKHEIGHT, self.cfg.BRICKWIDTH, self.cfg.BRICKHEIGHT)) clock = pygame.time.Clock() while True: if state != running : return state for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit(-1) keys_pressed = pygame.key.get_pressed() if keys_pressed[pygame.K_LEFT]: paddle.move( left ) elif keys_pressed[pygame.K_RIGHT]: paddle.move( right ) self.screen.fill(self.cfg.AQUA) is_alive = ball.move() # 判断有没有接住球 if not is_alive: ball.reset() paddle.reset() num_lives -= 1 if num_lives == 0: state = fail # 球和砖块碰撞检测 num_bricks = pygame.sprite.spritecollide(ball, brick_sprites, True) score += len(num_bricks) # 球和拍碰撞检测 if pygame.sprite.collide_rect(ball, paddle): ball.change() # 判断砖块是否已经打完 if len(brick_sprites) == 0: state = win # 将游戏精灵绑定到屏幕 paddle.draw(self.screen, self.cfg.PURPLE) ball.draw(self.screen, self.cfg.WHITE) for brick in brick_sprites: brick.draw(self.screen, self.cfg.YELLOW) text_render = self.font_ all.render( SCORE: %s, LIVES: %s % (score, num_lives), False, self.cfg.BLUE) self.screen.blit(text_render, (10, 10)) pygame.display.flip() clock.tick(50) 关卡切换 def __nextLevel(self): clock = pygame.time.Clock() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit(-1) if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN: return self.screen.fill(self.cfg.AQUA) text = Press Enter to enter the next level text_render = self.font_big.render(text, False, self.cfg.BLUE) self.screen.blit(text_render, ((self.cfg.SCREENWIDTH-text_render.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render.get_rect().height)//3)) pygame.display.flip() clock.tick(30)

  5)主函数与运行界面

  import cfgfrom modules import breakoutClone 主函数 def main(): game = breakoutClone(cfg) game.run() run if __name__ == __main__ : main()

  三、效果展示

  1)视频效果展示——

  程序带你回忆经典:原生Python开发一款打砖块儿小游戏~

  2)截图效果展示——

  游戏开始界面——

  运行界面——

  总结

  于茫茫人海相遇——感谢你的阅读!相遇即是缘分,如有帮助到你,记得三连哦~

  我是木木子,一个不止能编程的女码农,还能教你玩游戏、 节日惊喜、甚至撩小姐姐、小哥哥的表白小程序哦......

  写在最后——往期也有很多精彩内容,欢迎阅读!关注我,每日更新

  私信小编06即可获取文章源码啦~往期也有很多哦!

   相关文章

  文徵明习字(分享好故事之文徵明习字)

  文征明习字(文征明草书习字贴)

  农民如何致富(农村如何致富?农村致富金点子)

  春秋战国地图(春秋战国混乱的500多年如何来看明白)

  春秋战国时期地图(战国时期局势演变全图)

  手机费买东西(话费可以支付这些东西,你都知道么?)

  苏宁电器价格(买台冰箱、空调要多花300-500元?)

  上海三本院校(上海这所高校听校名像三本)

  肥皂剧英文(“肥皂剧”用英语怎么说?)

  莲的别称(荷花的十大别称)

  民办大学排名(民办大学软科排名出炉)

  陕西大学排名(2022陕西大学排行榜更新)

  更多打砖块 游戏(打砖块小游戏免费下载)相关信息请关注本文章,本文仅仅做为展示!

Tags: 网络趣事  

很赞哦! ()

随机图文

留言与评论 (共有 条评论)
验证码:

本栏推荐