赞
踩
网络上对的介绍:水果机最为常见的是在街机厅中见到的,以新颖的水果作为游戏主题,融合了博彩类游戏元素。水果机界面由24个方格拼接成一个正方形,每个方格中都有一个目标(多个不同的图形,通常为水果),且每个方格下都有一个小灯。玩家投入游戏币后,选择希望押注的目标,当玩家按下开始键后,小灯开始绕着正方形中每个格子转,当小灯停下来时,如果停在玩家押注的目标时,则玩家可赢取相应的游戏币。
我做的水果机也是按照这个原理,具有随机抽奖的功能,会在抽奖刚开始时加速,到达一定值后减速,抽到某一水果后会用文字提示,下一次抽奖时会接着从上一次停止位置开始。
安装PyQT5 | 做准备工作,安装PyQt5等插件。 |
窗体设计 | 搜集图片,在Qt里面进行设计。 |
窗体加载 | 1.创建主窗体 |
2.窗体大小不能随便更改 | |
3.显示主窗体 | |
窗体属性 | 1.创建列表,保存图片的按钮 |
2.再创建一个列表,保存图片的显示信息 | |
3.设置“开始”按钮的鼠标单击cliked的槽函数。 | |
4.生成一个范围0-图片数-1的随机整数并保存到变量。 | |
5.定义一个布尔变量,初始值为Ture,代表开始游戏计时器执行时间间隔递减。 | |
启动游戏 | 1.随机生成150-250之间的数字,代表毫秒数 |
2.实例化计时器对象 | |
3.设置计时器对象执行间隔时间 | |
4.计时器对象间隔时间到期调用函数startTimer | |
5.启动计时器 | |
Qtime的timeout事件 | 1.判断当前按钮列表索引是否为0 |
2.设置按钮列表当前索引所在按钮图片大小变大 | |
3.索引加一 | |
4.判断索引是否超出按钮列表最大索引 | |
5.判断计时器间隔时间值是减少还是增加 | |
6.判断计时器间隔时间是否小于1毫秒 | |
7.判断计时器间隔时间是否大于等于350毫秒 | |
8.重新设置下一次计时器间隔时间 |
从设计上告别博彩的色彩,让水果机成为适合所有人的一个选择工具。
这个是用PyQt5工具设计并转化而来的代码,PyQt5具体配置请看这篇博客
http://t.csdn.cn/vleWZhttp://t.csdn.cn/vleWZ
-
- import random
- import sys
- from msilib import Dialog
-
- import self as self
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtCore import QTimer, QSize
- from PyQt5.QtGui import QPalette, QPixmap, QBrush
- from PyQt5.QtWidgets import QApplication, QMainWindow
-
-
- def setInterval(self):
- """
- :param self:
- """
- pass
-
-
- class Ui_Dialog(object):
- def setupUi(self, Dialog):
- Dialog.setObjectName("Dialog")
- Dialog.resize(751, 536)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap("水果图片/西瓜果(watermelon fruit)-ico_爱给网_aigei_com.ico"), QtGui.QIcon.Normal,
- QtGui.QIcon.Off)
- Dialog.setWindowIcon(icon)
-
- self.p1_btn = QtWidgets.QPushButton(Dialog)
- self.p1_btn.setGeometry(QtCore.QRect(9, 14, 113, 109))
- self.p1_btn.setText("")
- icon1 = QtGui.QIcon()
- icon1.addPixmap(QtGui.QPixmap("水果图片/苹果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn.setIcon(icon1)
- self.p1_btn.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn.setFlat(True)
- self.p1_btn.setObjectName("p1_btn")
-
- self.p1_btn_2 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_2.setGeometry(QtCore.QRect(132, 14, 113, 109))
- self.p1_btn_2.setText("")
- icon2 = QtGui.QIcon()
- icon2.addPixmap(QtGui.QPixmap("水果图片/橙子.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_2.setIcon(icon2)
- self.p1_btn_2.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_2.setFlat(True)
- self.p1_btn_2.setObjectName("p1_btn_2")
-
- self.p1_btn_3 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_3.setGeometry(QtCore.QRect(255, 14, 113, 109))
- self.p1_btn_3.setText("")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap("水果图片/蓝莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_3.setIcon(icon3)
- self.p1_btn_3.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_3.setFlat(True)
- self.p1_btn_3.setObjectName("p1_btn_3")
-
- self.p1_btn_4 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_4.setGeometry(QtCore.QRect(378, 14, 113, 109))
- self.p1_btn_4.setText("")
- icon4 = QtGui.QIcon()
- icon4.addPixmap(QtGui.QPixmap("水果图片/荔枝.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_4.setIcon(icon4)
- self.p1_btn_4.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_4.setFlat(True)
- self.p1_btn_4.setObjectName("p1_btn_4")
-
- self.p1_btn_5 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_5.setGeometry(QtCore.QRect(502, 14, 113, 109))
- self.p1_btn_5.setText("")
- icon5 = QtGui.QIcon()
- icon5.addPixmap(QtGui.QPixmap("水果图片/芒果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_5.setIcon(icon5)
- self.p1_btn_5.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_5.setFlat(True)
- self.p1_btn_5.setObjectName("p1_btn_5")
-
- self.p1_btn_6 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_6.setGeometry(QtCore.QRect(625, 14, 113, 109))
- self.p1_btn_6.setText("")
- icon6 = QtGui.QIcon()
- icon6.addPixmap(QtGui.QPixmap("水果图片/猕猴桃.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_6.setIcon(icon6)
- self.p1_btn_6.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_6.setFlat(True)
- self.p1_btn_6.setObjectName("p1_btn_6")
-
- self.p1_btn_9 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_9.setGeometry(QtCore.QRect(625, 134, 113, 109))
- self.p1_btn_9.setText("")
- icon7 = QtGui.QIcon()
- icon7.addPixmap(QtGui.QPixmap("水果图片/草莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_9.setIcon(icon7)
- self.p1_btn_9.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_9.setFlat(True)
- self.p1_btn_9.setObjectName("p1_btn_9")
-
- self.p1_btn_16 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_16.setGeometry(QtCore.QRect(625, 254, 113, 109))
- self.p1_btn_16.setText("")
- icon8 = QtGui.QIcon()
- icon8.addPixmap(QtGui.QPixmap("水果图片/葡萄.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_16.setIcon(icon8)
- self.p1_btn_16.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_16.setFlat(True)
- self.p1_btn_16.setObjectName("p1_btn_16")
-
- self.p1_btn_15 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_15.setGeometry(QtCore.QRect(625, 413, 113, 109))
- self.p1_btn_15.setText("")
- icon9 = QtGui.QIcon()
- icon9.addPixmap(QtGui.QPixmap("水果图片/樱桃.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_15.setIcon(icon9)
- self.p1_btn_15.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_15.setFlat(True)
- self.p1_btn_15.setObjectName("p1_btn_15")
-
- self.p1_btn_13 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_13.setGeometry(QtCore.QRect(502, 413, 113, 109))
- self.p1_btn_13.setText("")
- icon10 = QtGui.QIcon()
- icon10.addPixmap(QtGui.QPixmap("水果图片/青柠.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_13.setIcon(icon10)
- self.p1_btn_13.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_13.setFlat(True)
- self.p1_btn_13.setObjectName("p1_btn_13")
-
- self.p1_btn_11 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_11.setGeometry(QtCore.QRect(378, 413, 113, 109))
- self.p1_btn_11.setText("")
- icon11 = QtGui.QIcon()
- icon11.addPixmap(QtGui.QPixmap("水果图片/杨梅.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_11.setIcon(icon11)
- self.p1_btn_11.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_11.setFlat(True)
- self.p1_btn_11.setObjectName("p1_btn_11")
-
- self.p1_btn_12 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_12.setGeometry(QtCore.QRect(255, 413, 113, 109))
- self.p1_btn_12.setText("")
- icon12 = QtGui.QIcon()
- icon12.addPixmap(QtGui.QPixmap("水果图片/香蕉.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_12.setIcon(icon12)
- self.p1_btn_12.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_12.setFlat(True)
- self.p1_btn_12.setObjectName("p1_btn_12")
-
- self.p1_btn_14 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_14.setGeometry(QtCore.QRect(132, 413, 113, 109))
- self.p1_btn_14.setText("")
- icon13 = QtGui.QIcon()
- icon13.addPixmap(QtGui.QPixmap("水果图片/西瓜.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_14.setIcon(icon13)
- self.p1_btn_14.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_14.setFlat(True)
- self.p1_btn_14.setObjectName("p1_btn_14")
-
- self.p1_btn_10 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_10.setGeometry(QtCore.QRect(9, 413, 113, 109))
- self.p1_btn_10.setText("")
- icon14= QtGui.QIcon()
- icon14.addPixmap(QtGui.QPixmap("水果图片/无花果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_10.setIcon(icon14)
- self.p1_btn_10.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_10.setFlat(True)
- self.p1_btn_10.setObjectName("p1_btn_10")
-
- self.p1_btn_8 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_8.setGeometry(QtCore.QRect(9, 254, 113, 109))
- self.p1_btn_8.setText("")
- icon15 = QtGui.QIcon()
- icon15.addPixmap(QtGui.QPixmap("水果图片/桃子.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_8.setIcon(icon15)
- self.p1_btn_8.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_8.setFlat(True)
- self.p1_btn_8.setObjectName("p1_btn_8")
-
- self.p1_btn_7 = QtWidgets.QPushButton(Dialog)
- self.p1_btn_7.setGeometry(QtCore.QRect(9, 134, 113, 109))
- self.p1_btn_7.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
- self.p1_btn_7.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
- self.p1_btn_7.setText("")
- icon16 = QtGui.QIcon()
- icon16.addPixmap(QtGui.QPixmap("水果图片/树莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.p1_btn_7.setIcon(icon16)
- self.p1_btn_7.setIconSize(QtCore.QSize(100, 100))
- self.p1_btn_7.setFlat(True)
- self.p1_btn_7.setObjectName("p1_btn_7")
- self.message_lbl = QtWidgets.QLabel(Dialog)
- self.message_lbl.setGeometry(QtCore.QRect(160, 190, 441, 81))
- font = QtGui.QFont()
- font.setPointSize(20)
- font.setBold(True)
- font.setWeight(75)
- self.message_lbl.setFont(font)
- self.message_lbl.setAlignment(QtCore.Qt.AlignCenter)
- self.message_lbl.setObjectName("message_lbl")
-
- self.pushButton = QtWidgets.QPushButton(Dialog)
- self.pushButton.setGeometry(QtCore.QRect(310, 310, 131, 61))
- self.pushButton.setMouseTracking(True)
- self.pushButton.setIconSize(QtCore.QSize(16, 16))
- self.pushButton.setObjectName("pushButton")
- self.pushButton.background_color: (1.0, 0.4, 1.0, 0.0)
- self.p1_btn.raise_()
- self.p1_btn_2.raise_()
- self.p1_btn_3.raise_()
- self.p1_btn_4.raise_()
- self.p1_btn_5.raise_()
- self.p1_btn_6.raise_()
- self.p1_btn_9.raise_()
- self.p1_btn_16.raise_()
- self.p1_btn_15.raise_()
- self.p1_btn_11.raise_()
- self.p1_btn_13.raise_()
- self.p1_btn_12.raise_()
- self.p1_btn_14.raise_()
- self.p1_btn_10.raise_()
- self.p1_btn_8.raise_()
- self.p1_btn_7.raise_()
- self.message_lbl.raise_()
- self.pushButton.raise_()
-
- self.retranslateUi(Dialog)
- QtCore.QMetaObject.connectSlotsByName(Dialog)
- def retranslateUi(self, Dialog):
- _translate = QtCore.QCoreApplication.translate
- Dialog.setWindowTitle(_translate("Dialog", "刘佳皓的水果机"))
- self.message_lbl.setText(_translate("Dialog", "敢不敢试一试你的手气!!!"))
- self.pushButton.setText(_translate("Dialog", "5元一次"))
- # 以上代码除一些驱动外,基本都是UI里面的代码。
- self.myInitWindow()
- """这些代码是用来对UI的一些修改,根据自己的需要,
- 对其中一些代码的修改,可以得到自己想要的效果。"""
-
- # 设置窗体透明
- # Dialog.setWindowOpacity(0.9)
- # 设置窗体的背景色
- # Dialog.setStyleSheet("#Dialog{background-color:blue}")
- # 设置列表控件的背景色
- # self.Dialog.setStyleSheet("#Dialog{background-color:LavenderBlush}")
-
- # 设置窗体边框固定大小
- Dialog.setFixedSize(Dialog.width(), Dialog.height())
- # 设置窗体背景图片
- palette = QPalette()
- pix = QPixmap("水果图片/桌子.jpg")
- # # 自调背景图大小和窗体适应
- pix = pix.scaled(Dialog.width(), Dialog.height())
- palette.setBrush(QPalette.Background, QBrush(pix))
- Dialog.setPalette(palette)
- self.message_lbl.setStyleSheet("color: rgb(196, 222, 255);")
- self.pushButton.setStyleSheet("color: rgb(111, 321, 123);")
- def myInitWindow(self):
- """
- """
- self.btns = [self.p1_btn, self.p1_btn_2, self.p1_btn_3, self.p1_btn_4,
- self.p1_btn_5, self.p1_btn_6, self.p1_btn_9, self.p1_btn_16, self.p1_btn_15,
- self.p1_btn_13, self.p1_btn_11, self.p1_btn_12, self.p1_btn_14, self.p1_btn_10,
- self.p1_btn_8, self.p1_btn_7]
- self.btns_message = ["一天一苹果,医生远离我。", "橙子减少胆结石的发病率。", "蓝莓有助于防止衰老和癌症。",
- "荔枝促进新陈代谢。", "芒果抗菌消炎。",
- "猕猴桃使皮肤变得光滑。", "草莓助于消化,能健睥和胃。", "葡萄地阻止肾结石的形成。",
- "樱桃明显抑制肝癌细胞增殖。", "青柠减少脂肪的沉积。。",
- "杨梅清热解暑,解酒,利尿消肿.", "香蕉预防或治疗高血压。", "西瓜止暑解渴,健胃消食。",
- "无花果提高睡眠质量。", "桃子利尿解暑、清热明目。", "树莓有助于保护心脏"]
-
- self.pushButton.clicked.connect(self.gameStart)
- self.index = random.randint(0, 16)
- self.direction = True
- # 认定Ture是递减
- # 启动游戏
- def gameStart(self):
- # 随机生成毫秒数
- self.speed = random.randint(150, 250)
- # 实例化计时器对象
- self.timer = QTimer()
- # 设置计时器对象执行间隔时间
- self.timer, setInterval(self)
- # 计时器对象间隔时间到期调用函数startTimer
- self.timer.timeout.connect(self.startTimer)
- # 启动计时器
- self.timer.start()
-
- # 计时器间隔时间到达执行函数
- def startTimer(self):
- # 判断当前按钮列表索引是否为0
- if self.index == 0:
- # 如果为0,索引15的按钮图片重新设置为原始大小
- self.btns[15].setIconSize(QSize(100, 100))
- # 否则
- else:
- # 索引减一的按钮图片重新设置为原始大小
- self.btns[self.index - 1].setIconSize(QSize(100, 100))
- # 设置按钮列表当前索引所在按钮图片大小变大
- self.btns[self.index].setIconSize(QSize(130, 130))
- # 索引加一
- self.index += 1
- # 判断索引是否超出按钮列表最大索引
- if self.index >= len(self.btns):
- # 如果索引超出范围,索引重新从0开始
- self.index = 0
- # 判断计时器间隔时间值是减少还是增加
- if self.direction:
- # 如果是Ture,间隔每次减少5毫秒
- self.speed -= 15
- else:
- # 如果是False,间隔每次怎加5毫秒
- self.speed += 15
- # 判断计时器间隔时间是否小于1毫秒
- if self.speed <= 1:
- # 重新设置间隔时间
- self.speed = 1
- self.direction = False
-
- # 重新设置下一次计时器间隔时间
- self.timer.setInterval(self.speed)
- # 判断计时器间隔时间是否大于等于300毫秒
- if self.speed >= 300:
- # 重新设置变量direction的值为Ture,代表方向减少
- self.direction = True
- # 停止
- self.timer.stop()
- self.message_lbl.setText(self.btns_message[self.index - 1])
- # 程序入口
- if __name__ == '__main__': # python模拟程序入口
- # 创建主窗体
- app = QApplication(sys.argv)
- # 设计的UI界面实体化
- ui = Ui_Dialog()
- # 创建主窗体对象,一个应用程序可以有多个窗体,但是一个窗体不能代表一个应用程序。
- MainWindow = QMainWindow()
- # 把所有用到的控件化在主窗体上。
- ui.setupUi(MainWindow)
- # 设置窗体大小不能更改
- MainWindow.setFixedSize(MainWindow.width(), MainWindow.height())
- # 主窗体自己的宽 #主窗体自己的高
- # 显示主窗体
- MainWindow.show()
- sys.exit(app.exec_())
这上面有很多代码时从UI上转化来的,然后再用一些代码修饰,从而让水果机“活”起来。
本项目只是简单的实现了抽奖的功能,在很多地方还有不足,比如UI的设计还可以在漂亮一些,但本人的审美不足,就只能做到这了。
我是一个Python新手,如果代码哪里有不对,或者可以简化的地方,还请各位大佬指正或建议出来,谢谢大家看到最后。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。