项目介绍
本项目是一个python的课程设计项目,使用pygame库实现界面渲染以及pymysql库实现mysql数据库存储游戏数据并且包含完整的讲解ppt,源代码,以及详细的使用文档,希望可以对你的课程设计产生启发。
亮点功能
1.统计游戏时长
2.游戏成绩排行榜
3.游戏图片随机
4.bgm随机
5.成绩提示
6.难度选择
效果展示
游戏登录界面(获取用户名,输入英文需先按shift)
游戏主菜单(包含难度选择和游戏排行榜)
游戏界面(左下角计时器)
成绩提示界面(游戏时长)
使用教程
1.下载安装mysql(自行搜索,有很多优秀教程,这里不再赘述)
2.安装pymysql(使用国内镜像源下载)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql
3.安装pygame (使用国内镜像源下载)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame
4.打开命令台,使用命令输入密码登录mysql
mysql -u root -p
5.输入命令创建数据库 pt:
CREATE DATABASE IF NOT EXISTS pt;
6.输入命令选择或切换到数据库 pt:
USE pt;
7.输入命令在 pt 数据库中创建 score_list 表:
CREATE TABLE IF NOT EXISTS score_list (
id INT AUTO_INCREMENT PRIMARY KEY,
score INT NOT NULL,
degree VARCHAR(255) NOT NULL
);
8.修改history.py文件中第3行处的db_config中修改登录用户名及密码
db_config={
'host': 'localhost',
'port': 3306,
'user': 'root',//修改为自己的mysql用户名
'password': '123456',//修改为自己的用户密码
'database': 'pt',
}
9.运行enmu.py文件即可启动项目
游戏内容修改:
1.修改菜单背景图片:
Menu.py第48行,修改为你的图片路径
2.修改游戏图片:
直接在images文件夹中修改,如:将图片放到images文件夹中,游戏即可随机挑选图片开始游戏
3.修改主菜单界面背景音乐:
menu.py第23行路径替换为你想要播放的音乐路径
4.修改游戏界面背景音乐:
直接在music文件夹中修改,如:将音乐放到music文件夹中,游戏即可随机挑选音乐开始游戏
5.修改游戏难度:
在menu.py中122行及以后中修改start_game函数中传入的数字大小,如传入3则游戏难度为3*3的拼图
项目重点代码讲解
1.图片随机模块
#随机图片
def GetImagePath():
imgs = os.listdir("./images")#获取图片目录文件信息保存
if len(imgs) == 0:#判断目录是否为空
print('[Error]: No pictures in filepath...')
return os.path.join("./images", random.choice(imgs))#随机选取一个文件名并与文件夹路径拼接返回一个图片路径
2. 图片切割及排序模块
# 切割并随机打乱拼图
def shuffle_image(image):
global original_pieces
pieces = [image.subsurface((x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE))#切割图片生成拼块序列
for y in range(ROWS) for x in range(COLS)]
original_pieces = pieces #记录原始拼块序列(到时候用来判定是否完成拼图)
pieces = random.sample(pieces, len(pieces))#随机打乱拼块序列顺序,并返回序列
return pieces
3.拼块交换模块
for event in pygame.event.get(): #监听事件
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
x, y = pygame.mouse.get_pos() #得到鼠标按下坐标
selected_tile = (y // TILE_SIZE) * COLS + (x // TILE_SIZE)
if event.type == pygame.MOUSEBUTTONUP:
if event.button == 1 and selected_tile is not None:
x, y = pygame.mouse.get_pos() #得到鼠标松开坐标
target_tile = (y // TILE_SIZE) * COLS + (x // TILE_SIZE)# 计算目标拼图块的索引
pieces[selected_tile], pieces[target_tile] = pieces[target_tile], pieces[selected_tile] # 交换拼图块
selected_tile = None # 更新索引
项目结构图
pt
├─ history.py //游戏排行榜文件
├─ menu.py //主菜单文件
├─ pt.py //拼图游戏文件
├─ tip.py //用户登录文件
├─ 使用教程.docx //使用文档
├─ 实验ppt.pptx //实验报告ppt
├─ music //bgm文件夹
└─ images //图片文件夹
结尾
哈哈,亲爱的你如果都看到了这,还有什么理由不关注我呢?
最后的最后祝各位都能顺利度过python课程设计,期待咱们的下一次相遇
项目链接
链接:https://pan.baidu.com/s/182JMaIA1eAlsY80BFJd_tw?pwd=0226
提取码:0226