当前位置: 首页 > 科技观察

Python代码,能玩30多款童年游戏!你玩过几个

时间:2023-03-17 01:18:38 科技观察

大游戏小游戏数以万计。这些小游戏应该只有90后才会玩和懂。六一儿童节到了。光头程序员虽然没有了头发,但童心犹在。今天分享一些私人收藏。儿时游戏,十几行代码就能进入一个用Python开发的小游戏,玩的开心!工具:Python3.8,pycharm2020也可以不安装pycharm2020直接运行~不过如果安装一些会更好1.五子棋源码:'''游戏启动界面'''classgameStartUI(QWidget):def__init__(self,parent=None,**kwargs):super(gameStartUI,self).__init__(parent)self.setFixedSize(760,650)self.setWindowTitle('五子棋——九歌')self.setWindowIcon(QIcon(cfg.ICON_FILEPATH))#背景图片palette=QPalette()palette.setBrush(self.backgroundRole(),QBrush(QPixmap(cfg.BACKGROUND_IMAGEPATHS.get('bg_start'))))self.setPalette(palette)#button#--人机对战self.ai_button=PushButton(cfg.BUTTON_IMAGEPATHS.get('ai'),self)self.ai_button.move(250,200)self.ai_button.show()self.ai_button.click_signal.connect(self.playWithAI)#--在线战斗自我。online_button=PushButton(cfg.BUTTON_IMAGEPATHS.get('online'),self)self.online_button.move(250,350)self.online_button.show()self.online_button.click_signal.connect(self.playOnline)'''人机Battle'''defplayWithAI(self):self.close()self.gaming_ui=playWithAIUI(cfg)self.gaming_ui.exit_signal.connect(lambda:sys.exit())self.gaming_ui.back_signal.connect(self.show)self.gaming_ui.show()'''在线对战'''defplayOnline(self):self.close()self.gaming_ui=playOnlineUI(cfg,self)self.gaming_ui.show()'''run'''if__name__=='__main__':app=QApplication(sys.argv)handle=gameStartUI()font=QFont()font.setPointSize(12)handle.setFont(font)handle.show()sys.exit(app.exec_())2.超级马里奥的源代码非常大,而且文件很大Big~需要源码的同学关注小编,私信“01”领取else:breakInterface(screen,cfg,mode='game_end')me.display.update()clock。tick(cfg.FPS)ifis_win_flag:3。炸弹人源代码:'''游戏主程序'''defmain(cfg):#Initializepygame.init()pygame.mixer.init()pygame.mixer.music.load(cfg.BGMPATH)pygame.mixer.music.play(-1,0.0)screen=pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('炸弹人——九歌')#启动界面Interface(screen,cfg,mode='game_start')#GameMasterloopfont=pygame.font.SysFont('Consolas',15)forgamemap_pathincfg.GAMEMAPPATHS:#-mapmap_parser=mapParser(gamemap_path,bg_paths=cfg.BACKGROUNDPATHS,wall_paths=cfg.WALLPATHS,blocksize=cfg.BLOCKSIZE)#-水果fruit_sprite_group=pygame.sprite.Group()used_spaces=[]foriinrange(5):coordinate=map_parser.randomGetSpace(used_spaces)used_spaces.append(coordinate)fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS),coordinate=coordinate,blocksize=cfg.BLOCKSIZE))#-我方Herocoordinate=map_parser.randomGetSpace(used_spaces)used_spaces.append(coordinate)ourhero=Hero(imagepaths=cfg.HEROZELDAPATHS,coordinate=coordinate,blocksize=cfg.BLOCKSIZE,map_parser=map_parser,hero_name='ZELDA')#-电脑Heroaihero_sprite_group=pygame.sprite.Group()coordinate=map_parser.randomGetSpace(used_spaces)aihero_sprite_group.add(Hero(imagepaths=cfg.HEROBATMANPATHS,coordinate=coordinate,blocksize=cfg.BLOCKSIZE,map_parser=map_parser,hero_name='BATMAN'))used_spaces.append(coordinate)coordinate=map_parser.randomGetSpace(used_spaces)aihero_sprite_group.add(英雄(图像路径=cfg.HERODKPATHS,坐标=坐标,blocksize=cfg.BLOCKSIZE,map_parser=map_parser,hero_name='DK'))used_spaces.append(coordinate)#-bombbombbomb_sprite_group=pygame.sprite.Group()#-flagis_win_flag=False判断游戏输赢#-主循环screen=pygame.display.set_mode(map_parser.screen_size)clock=pygame.time.Clock()whileTrue:dt=clock.tick(cfg.FPS)foreventinpygame.event.get():ifevent.type==pygame.QUIT:pygame.quit()sys.exit(-1)#--↑↓←→键控制上下左右,空格键投弹elifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_UP:ourhero.move('up')elifevent.key==pygame.K_DOWN:ourhero.move('down')elifevent.key==pygame.K_LEFT:ourhero.move('left')elifevent.key==pygame.K_RIGHT:ourhero.move('right')elifevent.key==pygame.K_SPACE:iffourhero.bomb_cooling_count<=0:bomb_sprite_group.add(ourhero.generateBomb(imagepath=cfg.BOMBPATH,digitalcolor=cfg.YELLOW,explode_imagepath=cfg.FIREPATH))screen.fill(cfg.WHITE)#--电脑英雄随机动作forheroinaihero_sprite_group:action,flag=hero.randomAction(dt)ifflagandaction=='dropbomb':bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH,digitalcolor=cfg.YELLOW,explode_imagepath=cfg.FIREPATH))#--吃水果加血(只要是Hero就可以加)ourhero.eatFruit(fruit_sprite_group)forheroinaihero_sprite_group:hero.eatFruit(fruit_sprite_group)#--游戏元素绑定到屏幕map_parser.draw(screen)forbombinbomb_sprite_group:ifnotbomb.is_being:bomb_sprite_group.remove(bomb)explode_area=bomb.draw(screen,dt,map_parser)ifexplode_area:#--英雄在爆炸火焰范围内的生命值会持续降低draw(screen,dt)ourhero.draw(screen,dt)#--左上角显示生命值pos_x=showText(screen,font,text=ourhero.hero_name+'(our):'+str(ourhero.health_value),color=cfg.YELLOW,position=[5,5])forheroinaihero_sprite_group:pos_x,pos_y=pos_x+15,5pos_x=showText(screen,font,text=hero.hero_name+'(ai):'+str(hero.health_value),color=cfg.YELLOW,position=[pos_x,pos_y])#--本方玩家生命值小于等于0/电脑玩家生命值小于等于0则判定游戏结束iffourhero.health_value<=0:is_win_flag=Falsebreakforheroinaihero_sprite_group:ifhero.health_value<=0:aihero_sprite_group.remove(hero)iflen(aihero_sprite_group)==0:is_win_flag=Truebreakpygame.display.update()clock.tick(cfg.FPS)ifis_win_flag:界面(屏幕,cfg,mode='game_switch')else:breakInterface(screen,cfg,mode='game_end')'''run'''if__name__=='__main__':whileTrue:main(cfg)4.由于长度推箱子,以下游戏源码就不贴了。需要的同学关注小编,私信“01”获取下载5.扫雷迫不及待上学就呆在机房玩这个游戏,哈哈哈第二款AI贪吃蛇经典游戏俄罗斯方块