Python代码,能玩30多款童年游戏!这些有几个是你玩过的

大游戏小游戏有千千万万,这些小游戏应该只有90后才玩过和懂吧

创新互联服务项目包括福绵网站建设、福绵网站制作、福绵网页制作以及福绵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,福绵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到福绵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

儿童节即将到来,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一些私藏的童年游戏,十几行代码就能进入使用Python开发的小游戏快乐玩耍!

使用工具:

  • Python3.8、pycharm2020

也可以不安装pycharm2020也可以直接运行~但是安装了些会好一点

1.五子棋

源码:

 
 
 
 
  1. '''游戏开始界面'''
  2. class gameStartUI(QWidget):
  3.     def __init__(self, parent=None, **kwargs):
  4.         super(gameStartUI, self).__init__(parent)
  5.         self.setFixedSize(760, 650)
  6.         self.setWindowTitle('五子棋 —— 九歌')
  7.         self.setWindowIcon(QIcon(cfg.ICON_FILEPATH))
  8.         # 背景图片
  9.         palette = QPalette()
  10.         palette.setBrush(self.backgroundRole(), QBrush(QPixmap(cfg.BACKGROUND_IMAGEPATHS.get('bg_start'))))
  11.         self.setPalette(palette)
  12.         # 按钮
  13.         # --人机对战
  14.         self.ai_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('ai'), self)
  15.         self.ai_button.move(250, 200)
  16.         self.ai_button.show()
  17.         self.ai_button.click_signal.connect(self.playWithAI)
  18.         # --联机对战
  19.         self.online_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('online'), self)
  20.         self.online_button.move(250, 350)
  21.         self.online_button.show()
  22.         self.online_button.click_signal.connect(self.playOnline)
  23.     '''人机对战'''
  24.     def playWithAI(self):
  25.         self.close()
  26.         self.gaming_ui = playWithAIUI(cfg)
  27.         self.gaming_ui.exit_signal.connect(lambda: sys.exit())
  28.         self.gaming_ui.back_signal.connect(self.show)
  29.         self.gaming_ui.show()
  30.     '''联机对战'''
  31.     def playOnline(self):
  32.         self.close()
  33.         self.gaming_ui = playOnlineUI(cfg, self)
  34.         self.gaming_ui.show()
  35.  
  36.  
  37. '''run'''
  38. if __name__ == '__main__':
  39.     app = QApplication(sys.argv)
  40.     handle = gameStartUI()
  41.     font = QFont()
  42.     font.setPointSize(12)
  43.     handle.setFont(font)
  44.     handle.show()
  45.     sys.exit(app.exec_())

2.超级玛丽

这个源码超级多多,文件很大很大~需要源码的同学关注小编,并私信“01”领取

 
 
 
 
  1.  else:
  2.         break
  3. Interface(screen, cfg, mode='game_end')
  4. me.display.update()
  5.         clock.tick(cfg.FPS)
  6.     if is_win_flag:

3.炸弹人

源码:

 
 
 
 
  1. '''游戏主程序'''
  2. def main(cfg):
  3.     # 初始化
  4.     pygame.init()
  5.     pygame.mixer.init()
  6.     pygame.mixer.music.load(cfg.BGMPATH)
  7.     pygame.mixer.music.play(-1, 0.0)
  8.     screen = pygame.display.set_mode(cfg.SCREENSIZE)
  9.     pygame.display.set_caption('Bomber Man —— 九歌')
  10.     # 开始界面
  11.     Interface(screen, cfg, mode='game_start')
  12.     # 游戏主循环
  13.     font = pygame.font.SysFont('Consolas', 15)
  14.     for gamemap_path in cfg.GAMEMAPPATHS:
  15.         # -地图
  16.         map_parser = mapParser(gamemap_path, bg_paths=cfg.BACKGROUNDPATHS, wall_paths=cfg.WALLPATHS, blocksize=cfg.BLOCKSIZE)
  17.         # -水果
  18.         fruit_sprite_group = pygame.sprite.Group()
  19.         used_spaces = []
  20.         for i in range(5):
  21.             coordinate = map_parser.randomGetSpace(used_spaces)
  22.             used_spaces.append(coordinate)
  23.             fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS), coordinate=coordinate, blocksize=cfg.BLOCKSIZE))
  24.         # -我方Hero
  25.         coordinate = map_parser.randomGetSpace(used_spaces)
  26.         used_spaces.append(coordinate)
  27.         ourhero = Hero(imagepaths=cfg.HEROZELDAPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='ZELDA')
  28.         # -电脑Hero
  29.         aihero_sprite_group = pygame.sprite.Group()
  30.         coordinate = map_parser.randomGetSpace(used_spaces)
  31.         aihero_sprite_group.add(Hero(imagepaths=cfg.HEROBATMANPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='BATMAN'))
  32.         used_spaces.append(coordinate)
  33.         coordinate = map_parser.randomGetSpace(used_spaces)
  34.         aihero_sprite_group.add(Hero(imagepaths=cfg.HERODKPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='DK'))
  35.         used_spaces.append(coordinate)
  36.         # -炸弹bomb
  37.         bomb_sprite_group = pygame.sprite.Group()
  38.         # -用于判断游戏胜利或者失败的flag
  39.         is_win_flag = False
  40.         # -主循环
  41.         screen = pygame.display.set_mode(map_parser.screen_size)
  42.         clock = pygame.time.Clock()
  43.         while True:
  44.             dt = clock.tick(cfg.FPS)
  45.             for event in pygame.event.get():
  46.                 if event.type == pygame.QUIT:
  47.                     pygame.quit()
  48.                     sys.exit(-1)
  49.                 # --↑↓←→键控制上下左右, 空格键丢炸弹
  50.                 elif event.type == pygame.KEYDOWN:
  51.                     if event.key == pygame.K_UP:
  52.                         ourhero.move('up')
  53.                     elif event.key == pygame.K_DOWN:
  54.                         ourhero.move('down')
  55.                     elif event.key == pygame.K_LEFT:
  56.                         ourhero.move('left')
  57.                     elif event.key == pygame.K_RIGHT:
  58.                         ourhero.move('right')
  59.                     elif event.key == pygame.K_SPACE:
  60.                         if ourhero.bomb_cooling_count <= 0:
  61.                             bomb_sprite_group.add(ourhero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH))
  62.             screen.fill(cfg.WHITE)
  63.             # --电脑Hero随机行动
  64.             for hero in aihero_sprite_group:
  65.                 action, flag = hero.randomAction(dt)
  66.                 if flag and action == 'dropbomb':
  67.                     bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH))
  68.             # --吃到水果加生命值(只要是Hero, 都能加)
  69.             ourhero.eatFruit(fruit_sprite_group)
  70.             for hero in aihero_sprite_group:
  71.                 hero.eatFruit(fruit_sprite_group)
  72.             # --游戏元素都绑定到屏幕上
  73.             map_parser.draw(screen)
  74.             for bomb in bomb_sprite_group:
  75.                 if not bomb.is_being:
  76.                     bomb_sprite_group.remove(bomb)
  77.                 explode_area = bomb.draw(screen, dt, map_parser)
  78.                 if explode_area:
  79.                     # --爆炸火焰范围内的Hero生命值将持续下降
  80.                     if ourhero.coordinate in explode_area:
  81.                         ourhero.health_value -= bomb.harm_value
  82.                     for hero in aihero_sprite_group:
  83.                         if hero.coordinate in explode_area:
  84.                             hero.health_value -= bomb.harm_value
  85.             fruit_sprite_group.draw(screen)
  86.             for hero in aihero_sprite_group:
  87.                 hero.draw(screen, dt)
  88.             ourhero.draw(screen, dt)
  89.             # --左上角显示生命值
  90.             pos_x = showText(screen, font, text=ourhero.hero_name+'(our):'+str(ourhero.health_value), color=cfg.YELLOW, position=[5, 5])
  91.             for hero in aihero_sprite_group:
  92.                 pos_x, pos_y = pos_x+15, 5
  93.                 pos_x = showText(screen, font, text=hero.hero_name+'(ai):'+str(hero.health_value), color=cfg.YELLOW, position=[pos_x, pos_y])
  94.             # --我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束
  95.             if ourhero.health_value <= 0:
  96.                 is_win_flag = False
  97.                 break
  98.             for hero in aihero_sprite_group:
  99.                 if hero.health_value <= 0:
  100.                     aihero_sprite_group.remove(hero)
  101.             if len(aihero_sprite_group) == 0:
  102.                 is_win_flag = True
  103.                 break
  104.             pygame.display.update()
  105.             clock.tick(cfg.FPS)
  106.         if is_win_flag:
  107.             Interface(screen, cfg, mode='game_switch')
  108.         else:
  109.             break
  110.     Interface(screen, cfg, mode='game_end')
  111.  
  112.  
  113. '''run'''
  114. if __name__ == '__main__':
  115.     while True:
  116.         main(cfg)

4.推箱子

因为篇幅原因,下面的游戏都不贴源码了,需要的同学关注小编,并私信“01”获取下载

5.扫雷

上学时恨不得一直待在电脑房玩这个游戏,哈哈哈

第二种AI贪吃蛇

经典游戏俄罗斯方块

名称栏目:Python代码,能玩30多款童年游戏!这些有几个是你玩过的
文章网址:http://www.shufengxianlan.com/qtweb/news5/556455.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联