用户:氯化氢不是氯代烃查看:0 回复:0 评论:0 创建时间:2021-02-19T13:00:41
【作品展示】

【作品介绍】
一个电子宠物。需要一个ui文件的辅助。有喂食、散步、抚摸等功能,模拟一只宠物。
【作品源代码】
import sys
import time
import json
import random
import pygame
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from ui_pypet import Ui_MainWindow
pygame.init()
class MainWindowPet(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.show()
self.Imgs = [QPixmap(r"F:\mouse\PyPet1.0\Imgs\MyPet_Nothing.png"),
QPixmap(r"F:\mouse\PyPet1.0\Imgs\MyPet_Eating.png"),
QPixmap(r"F:\mouse\PyPet1.0\Imgs\MyPet_Stroking.png"),
QPixmap(r"F:\mouse\PyPet1.0\Imgs\MyPet_Walking.png"),
QPixmap(r"F:\mouse\PyPet1.0\Imgs\MyPet_Doctor.png")]
self.Image = 0
self.MainLb_Pet.setPixmap(self.Imgs[self.Image])
self.MainLb_Pet.setFont(None)
self.Level = 0
self.Fullness = 1.0
self.Happiness = 1.0
self.Health = 1.0
self.Money = 10000
self.Temprature = 25.0
self.IsClean = True
self.IsWalking = False
Start = 0
End = 0
self.pbtn_Cool.clicked.connect(self.Cool)
self.pbtn_Warm.clicked.connect(self.Warm)
self.pbtn_Walk.clicked.connect(self.Walk)
self.pbtn_Feed.clicked.connect(self.Feed)
self.pbtn_Doctor.clicked.connect(self.Doctor)
self.pbtn_Stroke.clicked.connect(self.Stroke)
self.pbtn_Clean.clicked.connect(self.Clean)
self.pbtn_LevelUp.clicked.connect(self.LevelUp)
try:
self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level = self.GetLastData()
except:
pass
self.Adventure()
self.ShowStatus()
def ShowStatus(self):
self.StatusSafe()
self.lb_Money.setText("money:{}".format(int(self.Money)))
self.lb_Full.setText("fullness:{}".format(round(self.Fullness, 5)))
self.lb_Health.setText("Health:{}".format(round(self.Health, 5)))
self.lb_Happiness.setText(
"Happoness:{}".format(round(self.Happiness, 5)))
self.lb_Temprature.setText(
"Temprature:{}".format(round(self.Temprature, 3)))
self.lb_Level.setText("petlevl:{}".format(int(self.Level)))
def ShowForm(self, ImgIndex):
self.Image = self.Imgs[ImgIndex]
self.MainLb_Pet.setPixmap(self.Image)
def StatusSafe(self):
if self.Fullness > 1.0:
self.Fullness = 1.0
if self.Fullness < 0.0:
self.Fullness = 0.0
if self.Happiness > 1.0:
self.Happiness = 1.0
if self.Happiness < 0.0:
self.Happiness = 0.0
if self.Health > 1.0:
self.Health = 1.0
if self.Health < 0.0:
self.Health = 0.0
if self.Money < 0:
self.Money = 0
def GetLastData(self):
try:
with open(r"F:\mouse\PyPet1.0\PetData.json") as f:
Data = json.load(f)
return Data
except:
pass
def SaveData(self, Data):
with open(r"F:\mouse\PyPet1.0\PetData.json", "w") as f:
json.dump(Data, f)
def Cool(self):
if self.Money >= 80:
self.Temprature -= 5
self.Money -= 80
self.Happiness += 0.1
self.ShowStatus()
self.ShowForm(0)
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.SaveData(self.FileData)
self.MakeMoney(16)
else:
self.lb_Status.setText("Not enough money.")
QMessageBox.warning(self, "PyPet warning", "Not enough money.")
def Warm(self):
if self.Money >= 80:
self.Temprature += 5
self.Money -= 80
self.Happiness += 0.1
self.ShowStatus()
self.ShowForm(0)
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.SaveData(self.FileData)
self.MakeMoney(16)
else:
self.lb_Status.setText("Not enough money.")
QMessageBox.warning(self, "PyPet warning", "Not enough money.")
def Walk(self):
if not self.IsWalking:
self.Happiness += 0.3
self.Health += 0.08
self.Fullness -= 0.06
self.ShowStatus()
self.ShowForm(3)
self.lb_Status.setText("I gone out for a walk.")
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.MakeMoney(23)
self.IsWalking = True
self.pbtn_Walk.setText("Back")
self.SaveData(self.FileData)
else:
self.IsWalking = False
self.pbtn_Walk.setText("Walk")
def Feed(self):
Need = random.randint(60, 90)
if self.Money >= Need:
self.Money -= Need
self.Fullness += 0.35
self.Happiness += 0.28
self.ShowStatus()
self.ShowForm(1)
self.lb_Status.setText("Yum.")
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.MakeMoney(int(Need / 10))
self.SaveData(self.FileData)
self.IsClean = False
else:
self.lb_Status.setText("Not enough money.")
QMessageBox.warning(self, "PyPet warning", "Not enough money.")
def Doctor(self):
Need = random.randint(800, 2500)
if self.Money >= Need:
self.Money -= Need
self.Health += 0.56
self.Happiness -= 0.01
self.ShowStatus()
self.ShowForm(4)
self.lb_Status.setText("I am healthier!")
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.MakeMoney(int(Need / 10))
self.SaveData(self.FileData)
else:
self.lb_Status.setText("Not enough money.")
QMessageBox.warning(self, "PyPet warning", "Not enough money.")
def Stroke(self):
self.Happiness += 0.18
self.ShowStatus()
self.ShowForm(2)
self.lb_Status.setText("I like being stroked!")
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.MakeMoney(15)
self.SaveData(self.FileData)
def Clean(self):
self.Happiness += 0.07
self.Health += 0.1
self.ShowStatus()
self.ShowForm(0)
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.MakeMoney(60)
self.IsClean = True
self.SaveData(self.FileData)
def LevelUp(self):
Need = 10 * (self.Level + 1)
if self.Money >= Need:
self.Money -= Need
self.Level += 1
self.ShowStatus()
self.ShowForm(0)
self.lb_Status.setText("Level up!")
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.SaveData(self.FileData)
else:
self.lb_Status.setText("Not enough money.")
QMessageBox.warning(self, "PyPet warning", "Not enough money.")
def Adventure(self):
Achievement = int(self.Level * self.Health * self.Fullness * random.randint(20, 50))
self.Money += Achievement
self.lb_Status.setText("I just came back from my last adventure. I found {} coins.".format(Achievement))
self.Health -= 0.1
self.FileData = self.Fullness, self.Happiness, self.Health, self.Money, self.Temprature, self.Level
self.SaveData(self.FileData)
self.ShowStatus()
def Live(self):
self.Temprature += random.randint(-10, 10) / 100
self.Happiness -= 0.0003
self.Fullness -= 0.0005
if self.Fullness <= 0.15:
self.Happiness -= 0.008
self.Health -= 0.02
if self.Happiness <= 0.13:
self.Health -= 0.001
if not self.IsClean:
self.Health -= 0.002
if self.Temprature > 32.5 or self.Temprature < 14.5:
self.Happiness -= 0.002
self.Health -= 0.001
def MakeMoney(self, Amount):
self.lb_Status.setText("I got {} coins.".format(Amount))
self.Money += Amount
self.ShowStatus()
if __name__ == "__main__":
MyApp = QApplication(sys.argv)
MyPet = MainWindowPet()
Clock = pygame.time.Clock()
while MyPet.Health > 0.0:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
break
if event.type == pygame.KEYDOWN:
pygame.quit()
break
MyPet.Live()
MyPet.ShowStatus()
Clock.tick(5)
sys.exit(MyApp.exec_())
try:
sys.exit(MyApp.exec_())
except:
pass
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn