分享上班摸鱼的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轴