用Python写了10个小游戏,上班能摸鱼几天?

分享上班摸鱼的10个Python小游戏,看看你能摸鱼几天不被发现😏

具体项目源码,实现效果

关注公众号:Python技术训练营

解锁
《1.python百万字PDF教程,手把手助你从零进阶拿高薪》
《2.2023python开发岗面试汇总大全》
《3.python10个上班摸鱼小游戏项目源码》

1丶坤坤打篮球

实现效果

源码分享

  import pygame
  import sys
  import traceback
  import CXK
  import enemy
  import bullet
  import supply
  form pygame.locals import *
  form random import *

  # 初始化pygame
  pygame.init()
  # 初始化pygame的音频模块
  pygame.mixer.init()

  # 定义背景尺寸宽和高
  bg_size = wigth,height = 480,700
  # 初始化窗口
  screen = pygame.display.set_mode(bg_size)
  # 设置显示在窗口上的名称
  pygame.display.set_caption(''CXK打篮球'')

  # 初始化背景图片
  background = pygame.image.load(''images/backgroud.png'').convert()

  # 定义RGB颜色
  BLACK = (0,0,0)
  GREEN = (0,255,0)
  RED = (255,0,0)

  # 载入背景音乐
  pygame.mixer.music.load(''sound/game_music.ogg'')
  pygame.mixer.music.set_volume(0.2)

  # 载入游戏音效
  background_sound = pygame.mixer.sound(''sound/background_sound.wav'')
  background_sound.set_volume(0.1)
  enemy3_fly_sound = pygame.mixer.sound(''sound/organic Rhythm Assault.wav'')
  background_sound.set_volume(0.2)
  enemy3_fly_sound = pygame.mixer.sound(''sound/爆炸.wav'')
  background_sound.set_volume(0.2)
  bomb_sound = pygame.mixer.sound(''sound/bomb_sound.wav'')
  bomb_sound.set_volume(0.2)
  get_supply_sound = pygame.mixer.sound(''sound/get_bullet_sound.wav'')
  get_supply_sound.set_volume(0.2)

  # 定义增加小型敌人的函数
  def add_small_enemies(group1,group2,num):
      for i in range(num)
          e1 = enemy.SmallEnemy(bg_size)
          group1.add(e1)
          group2.add(e1)

  #  定义增加中型敌人的函数
  def add_mid_enemies(group1,group2,num):
      for i in range(num)
          e2 = enemy.MidEnemy(bg_size)
          group1.add(e2)
          group2.add(e2)

  #  定义增加大型敌人的函数
  def add_mid_enemies(group1,group2,num):
      for i in range(num)
          e3 = enemy.BigEnemy(bg_size)
          group1.add(e3)
          group2.add(e3)
  # 定义增加敌人移动速度的函数
  def inc_speed(target,inc):
      for each in tatget:
          each.speed+=inc

  # 游戏主界面
  def ui():
      # 循环播放背景音乐
      pygame.mixer.music.play(-1)

      # 初始化界面按键图片并获取图片的矩形位置
      start_game_image = pygame.image.load(''images/start_game.png'').convert_alpha()
      start_game_image_rect = start_game_image.get_rect()
      game_rules_image = pygame.image.load(''images/game_rules.png'').convert_alpha()
      game_rules_image_rect = game_rules_image.get.rect()
      game_quit_image = pygame.image.load(''image/game_quit.png'').convert_alpha()
      game_quit_image_rect = game_quit_image.get_rect()
      
      # 初始化游戏规则图片并获取图片的矩形位置
      rules_image = pygame.image.load(''images/游戏玩法.png'').conver_talpha()
      back_image = pygame.image.load(''image/back.png'').convert_alpha()
      back_image_rect = back_image.get_rect()
     
      # 标志是否在主界面
      is_ui = True
  
      # 帧率
      clock = pygame.time.Clock()
   
      # 主界面循环
      while True:
          # 获取事件信息
          for event in pygame.event.get():
              # 如果点击右上角退出
              if event.type = = QUTT:
                 # 退出程序
                 pygame.quit()
                 sys.exit()

          # 如果是主界面
          if is_ui:
             # 绘制背景
             screen.blit(background,(0,0))
             
             # 更改主界面按键图片的矩形位置并绘制主界面按键
             start_game_image_rect.left,start_game_image_rect.top = (width - statr_game_image_rect.width)//2,height
             screen.blit(start_game_image,start_game_image_rect)

             game_rules_image_rect = game_rules_image.get_rect()
             game_rules_image_rect.left,game_rules_image_rect.top = (width - game_rules_image_rect.width)//2,start_game
             screen.blit(game_rules_image,game_rules_image_rect)

             game_quit_image_rect.left,game_quit_image_rect.top = (width - game_quit_image_rect.width)//2,game_rules
             screen.blit(game_quit_image,game_quit_image_rect)

             # 检测用户的鼠标操作
             # 如果用户按下鼠标左键
             if pygame.mouse.get_pressed()[0]:
                # 获取鼠标坐标
                pos = pygame.mouse.get_pos()
                # 如果用户点击''开始游戏''
                if start_game_image_rect.left < pos[0] < start_game_image_rect.right and start_game_image_rect.top < pos[0]
                   # 调用主函数
                   main()
                # 如果用户点击''退出游戏''
                if game_quit_image_rect.left <pos[0] <game_quit_image_rect.right and game_quit_image_rect.top < pos[0]
                   pygame.quit()
                   sys.exit()
                # 如果用户点击''游戏规则''
                if game_rules_image_rect.left < pos[0] <game_rules_image_rect.right and game_rules_image_rect.top< pos[0]
                    # 李凯主界面
                    if_ui = False
 
          # 进入游戏规则界面
          else:
               # 绘制游戏规则图片
               screen.blit(rulse_image,(0,0))
          
               # 停止播放背景音乐
               pygame.mixer.music.stop()
               # 循环播放游戏规则音效
               background_sound.play(-1)

               # 更改返回键的矩形位置并绘制返回按键
               back_image_rect.left,game_quit_image_rect.top = width - back_image_rect.width - 10,10
               screen.blit(back_image,(width - back_image_rect.width - 10,10))
 
               if pygame.mouse.get_pressed()[0]:
                  # 获取鼠标坐标
                  pos = pygame.mouse.get_pos()
                  # 如果用户点击返回图片
                  pygame.mixer.stop()
                  ui()
          # 刷新屏幕
          pygame.display.flip()
          ....
          代码省略部分
  if_ _name_ _ = =''_ _main_ _'':
       try:
           ui()
       except systemExit:
           pass
       # 异常处理
       except:
           traceback.print_exc()
           pygame.quit()
           os.system(''pause'')

2丶俄罗斯方块

实现效果

源码分享

import sys
import random,copy
import pygame as pg
from pygame.locals import *

# 常量声明
EMPTY_CELL = 0 # 空区标识,表示没有方块
FALLING_BLOCK = 1 # 下落中的方块标识,也就是活动方块
STATIC_BLOCK = 2 # 固体方块标识

' ' '
全局变量声明
变量值以sysInit函数中初始化后的结果为准
' ' '
defaultFont = None # 默认字体
screen = None # 屏幕输出对象
backsurface = None #  图像输出缓冲画板
score = 0 # 玩家得分记录
clearLinescore = 0 # 玩家清除的方块行数
level = 1 # 关卡等级
clock = None # 游戏始终
nowBlock = None # 当前下落中的方块
nextblock = None # 下一个将出现的方块
fallspeed = 10 # 当前方块下落速度
beginFallspeed = fallspeed # 游戏初始时方块下落速度
speedBuff = 0 # 下落速度缓冲变量
keyBuff = None # 上一次按键记录
maxBlockwidth = 10 # 舞台堆叠区X轴最大可容纳基础方块数
maxBlockHeight = 18 # 舞台堆叠区Y轴
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值