【PYQT】赛马娘抽卡模拟器-基于Bwiki的抽卡模拟(上)

PYQT实现赛马娘抽卡模拟器:UI设计与数据库集成
文章讲述了作者使用PYQT开发赛马娘抽卡模拟器的改进过程,包括UI设计、单抽与十连功能、结果显示、数据库连接及统计功能。作者展示了如何通过QTDesigner设计界面并分离代码,以及如何实现星级抽卡概率和结果显示。

前言

之前课程设计做过,当时搞得还是挺烂的,PYQT挺好用的,现在基于之前的改进,使得功能更加符合正常的抽卡模拟器需求,同时添加连接数据库。在写这个帖子的时候我还没有写数据库,因为卡牌数据的构建还有考虑一些规范。

数据库的支持详情见我的下一个帖子:【PYQT】赛马娘抽卡模拟器-基于Bwiki的抽卡模拟(下))

实际上这个界面参考了Bwiki的赛马娘抽卡模拟:
Bwiki赛马娘抽卡模拟器

本文你可以可以查看我的博客版本,完整源码地址:DrawCard_uma

有用可以star😘

预览

功能实现

  • 单抽+十连的结果图片显示
  • 十连保底出现SR
  • 重做界面,删除无用的登陆界面
  • 可以抽取马娘池,也可以抽取支援卡池子
  • 对抽卡结果的统计
  • 可以自主选择卡池
  • 选择不同卡池出现不同的标志性图片
  • 显示公告
  • 建立抽卡模拟器的数据库,建立表:卡池表,卡牌表,卡池&卡牌表,抽取结果表
  • 连接数据库
  • 显示抽卡记录的日志

项目结构:
在这里插入图片描述

QT界面预览:
请添加图片描述
QT控件表:
请添加图片描述
程序界面预览:
请添加图片描述

运行展示

由于我展示还没有创建卡牌的数据库,我只根据星级给抽卡结果进行了分类,从数据库中查找卡牌的各种信息更符合实际(但卡牌数据的构建实在过于麻烦,遂先不搞)。所以结果我做的只有外框显示就行了请添加图片描述

具体实现

同样,我们需要将UI文件和启动的py文件分离。通过QTdesigner设计的界面,在vscode的qt插件中右键,选中“PYQT:Compile Form”,自动生成ui的py文件,之后新建一个启动器文件。这样的好处在于可以随时改变界面。
创建一个res文件夹存放图片文件,一个data文件夹存放数据文件。

start.py的源码:

import sys
import random

#PyQt5中使用的基本控件
from PyQt5.QtWidgets import QApplication, QMainWindow,QMessageBox
from PyQt5.QtGui import QPixmap

#导入designer界面
from Ui_抽卡系统 import*

class MyMainForm(QMainWindow, Ui_Form): 
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        #提供标题
        self.setWindowTitle("抽卡模拟器")
        #添加信号和槽。      
        self.change_cardpool.clicked.connect(self.change_pool)
        self.change_cardpool_2.clicked.connect(self.change_pool_2)
        self.getone.clicked.connect(self.one)
        self.getten.clicked.connect(self.ten)
        self.getone_2.clicked.connect(self.one_2)
        self.getten_2.clicked.connect(self.ten_2)
        self.askbutton.clicked.connect(self.ask)

        # 加载并显示默认图片
        image_path = "res/2.5th Anniversary卡池.png" #默认出现的图片
        self.load_image(image_path)
        image_path = "res/2.5th Anniversary支援卡池.png" #默认出现的图片
        self.load_image_2(image_path)
#################### 加载图片,参数设置一个图片的路径
    #马池图
    def load_image(self,image_path): 
        pixmap = QPixmap(image_path) #变为Qpixmap对象
        # 调整 QLabel 大小以适应图片
        self.view_pool.setPixmap(pixmap)
        self.view_pool.setScaledContents(True)
    #支援卡池图
    def load_image_2(self,image_path):
        pixmap_2 = QPixmap(image_path) #变为Qpixmap对象
        # 调整 QLabel 大小以适应图片
        self.view_pool_2.setPixmap(pixmap_2)
        self.view_pool_2.setScaledContents(True)    

    #定义改变卡池的函数
    def change_pool(self):
        cardpool_name=self.cardpool_Box.currentText() #读取卡池信息  
        self.label_cardpool.setText(cardpool_name)
        image_path = "res/"+cardpool_name+".png" 
        self.load_image(image_path)

    def change_pool_2(self)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值