python课程设计|益智拼图游戏|ppt+源代码+使用文档

项目介绍

本项目是一个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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值