python简单小游戏代码100行,简单的python小游戏代码

大家好,本文将围绕python简单小游戏代码100行展开说明,简单的python小游戏代码是一个很多人都想弄明白的事情,想搞清楚python超简单小游戏代码需要先了解以下几个事情。

假期玩嗨了吧,我给你准备了六个小游戏,有胆子来玩一玩吗?我自己是玩了很多遍的,所以想让大家一起玩,独乐乐不如众乐乐。代码放在下面了,动手操作吧用python绘制满天星的流程图

在这里插入图片描述

1、小恐龙

玩法:上下控制起跳躲避

源码分享:

Python学习交流Q群:906715085###
import cfg
import sys
import random
import pygame
from modules import *


'''main'''
def main(highest_score):
   # 游戏初始化
   pygame.init()
   screen = pygame.display.set_mode(cfg.SCREENSIZE)
   pygame.display.set_caption('九歌')
   # 导入所有声音文件
   sounds = {
   }
   for key, value in cfg.AUDIO_PATHS.items():
       sounds[key] = pygame.mixer.Sound(value)
   # 游戏开始界面
   GameStartInterface(screen, sounds, cfg)
   # 定义一些游戏中必要的元素和变量
   score = 0
   score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(534, 15), bg_color=cfg.BACKGROUND_COLOR)
   highest_score = highest_score
   highest_score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(435, 15), bg_color=cfg.BACKGROUND_COLOR, is_highest=True)
   dino = Dinosaur(cfg.IMAGE_PATHS['dino'])
   ground = Ground(cfg.IMAGE_PATHS['ground'], position=(0, cfg.SCREENSIZE[1]))
   cloud_sprites_group = pygame.sprite.Group()
   cactus_sprites_group = pygame.sprite.Group()
   ptera_sprites_group = pygame.sprite.Group()
   add_obstacle_timer = 0
   score_timer = 0
   # 游戏主循环
   clock = pygame.time.Clock()
   while True:
       for event in pygame.event.get():
           if event.type == pygame.QUIT:
               pygame.quit()
               sys.exit()
           elif event.type == pygame.KEYDOWN:
               if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                   dino.jump(sounds)
               elif event.key == pygame.K_DOWN:
                   dino.duck()
           elif event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
               dino.unduck()
       screen.fill(cfg.BACKGROUND_COLOR)
       # --随机添加云
       if len(cloud_sprites_group) < 5 and random.randrange(0, 300) == 10:
           cloud_sprites_group.add(Cloud(cfg.IMAGE_PATHS['cloud'], position=(cfg.SCREENSIZE[0], random.randrange(30, 75))))
       # --随机添加仙人掌/飞龙
       add_obstacle_timer += 1
       if add_obstacle_timer > random.randrange(50, 150):
           add_obstacle_timer = 0
           random_value = random.randrange(0, 10)
           if random_value >= 5 and random_value <= 7:
               cactus_sprites_group.add(Cactus(cfg.IMAGE_PATHS['cacti']))
           else:
               position_ys = [cfg.SCREENSIZE[1]*0.82, cfg.SCREENSIZE[1]*0.75, cfg.SCREENSIZE[1]*0.60, cfg.SCREENSIZE[1]*0.20]
               ptera_sprites_group.add(Ptera(cfg.IMAGE_PATHS['ptera'], position=(600, random.choice(position_ys))))
       # --更新游戏元素
       dino.update()
       ground.update()
       cloud_sprites_group.update()
       cactus_sprites_group.update()
       ptera_sprites_group.update()
       score_timer += 1
       if score_timer > (cfg.FPS//12):
           score_timer = 0
           score += 1
           score = min(score, 99999)
           if score > highest_score:
               highest_score = score
           if score % 100 == 0:
               sounds['point'].play()
           if score % 1000 == 0:
               ground.speed -= 1
               for item in cloud_sprites_group:
                   item.speed -= 1
               for item in cactus_sprites_group:
                   item.speed -= 1
               for item in ptera_sprites_group:
                   item.speed -= 1
       # --碰撞检测
       for item in cactus_sprites_group:
           if pygame.sprite.collide_mask(dino, item):
               dino.die(sounds)
       for item in ptera_sprites_group:
           if pygame.sprite.collide_mask(dino, item):
               dino.die(sounds)
       # --将游戏元素画到屏幕上
       dino.draw(screen)
       ground.draw(screen)
       cloud_sprites_group.draw(screen)
       cactus_sprites_group.draw(screen)
       ptera_sprites_group.draw(screen)
       score_board.set(score)
       highest_score_board.set(highest_score)
       score_board.draw(screen)
       highest_score_board.draw(screen)
       # --更新屏幕
       pygame.display.update()
       clock.tick(cfg.FPS)
       # --游戏是否结束
       if dino.is_dead:
           break
   # 游戏结束界面
   return GameEndInterface(screen, cfg), highest_score


'''run'''
if __name__ == '__main__':
   highest_score = 0
   while True:
       flag, highest_score = main(highest_score)
       if not flag: break

在这里插入图片描述

2、消消乐

玩法:三个相连就能消除

源码分享:

import os
import sys
import cfg
import pygame
from modules import *
 
 
'''游戏主程序'''
def main():
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('Gemgem —— 九歌')
    # 加载背景音乐
    pygame.mixer.init()
    pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
    pygame.mixer.music.set_volume(0.6)
    pygame.mixer.music.play(-1)
    # 加载音效
    sounds = {
   }
    sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
    sounds['match'] = []
    for i in range(6):
        sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
    # 加载字体
    font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
    # 图片加载
    gem_imgs = []
    for i in range(1, 8):
        gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
    # 主循环
    game = gemGame(screen, sounds, font, gem_imgs, cfg)
    while True:
        score = game.start()
        flag = False
        # 一轮游戏结束后玩家选择重玩或者退出
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYUP and event.key == pygame.K_r:
                    flag = True
            if flag:
                break
            screen.fill((135, 206, 235))
            text0 = 'Final score: %s' % score
            text1 = 'Press <R> to restart the game.'
            text2 = 'Press <Esc> to quit the game.'
            y = 150
            for idx, text in enumerate([text0, text1, text2]):
                text_render = font.render(text, 1, (85, 65, 0))
                rect = text_render.get_rect()
                if idx == 0:
                    rect.left, rect.top = (212, y)
                elif idx == 1:
                    rect.left, rect.top = (122.5, y)
                else:
                    rect.left, rect.top = (126.5, y)
                y += 100
                screen.blit(text_render, rect)
            pygame.display.update()
        game.reset()
 
 
'''run'''
if __name__ == '__main__':
    main()

在这里插入图片描述

3、俄罗斯方块

玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的。

源码分享:

import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
 
 
'''定义俄罗斯方块游戏类'''
class TetrisGame(QMainWindow):
    def __init__(self
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值