项目部署:

简介:

初衷想复刻《赌博默示录》中的这个游戏,然后提高游戏难度,最后搞得沙雕一点。逻辑写了许多,美工一点没弄,被导师发配企业,且移情别恋剧本杀,等有缘人接盘它。

player.py

'''玩家类
'''
import random
import timeclass Player:with open("rpsname.txt", 'r', encoding='UTF-8') as f:player_name = f.readline().split(',')  # 静态变量def __init__(self, id):self.id = id  # 玩家idself.alive = True  # 玩家存活标记self.win = False  # 玩家胜利标记self.rock = 4  # 石头 - 0self.paper = 4  # 布 - 1self.scissors = 4  # 剪刀 - 2self.stars = 3  # 星星self.arrears = 0.00  # 贷款金额self.arrears_final = 0  # 贷款结算self.money = 0self.ltime = 0  # 贷款时间self.buycard_num = 0  # 购买次数self.prflag = False  # 是否是别人同伴的标记self.partner_0 = []  # 同伴 - 收取所有手牌,游戏结束支付100万人民币self.partner_1 = []  # 同伴 - 收取所有手牌,并协助其通关self.human = 0  # 玩家身份self.card_m = 0  # 赌怪牌# 玩家身份随机初始化h = random.randint(1, 20)if h == 1 or h == 2 or h == 3:self.human = 1elif h == 4:self.human = 2# 随机加载玩家名字self.name = Player.player_name[random.randint(0, len(Player.player_name) - 1)]Player.player_name.remove(self.name)  # 保证姓名唯一性def cardmaster(self, badluck):  # 赌怪作弊器card_list = [badluck.rock, badluck.paper, badluck.scissors]card = card_list.index(max(card_list))if card + 1 < 3:self.card_m = card + 1card = self.playcard()return cardelse:return 0# 玩家出牌def playcard(self):if self.human == 1:# 模拟 15% “高质量人类” 完全随机打牌index = random.randint(0, 2)while True:if index == 0 and self.rock > 0:self.rock -= 1breakif index == 1 and self.paper > 0:self.paper -= 1breakif index == 2 and self.scissors > 0:self.scissors -= 1breakindex = random.randint(0, 2)elif self.human == 2:  # 模拟赌怪打牌while True:if self.card_m == 0 and self.rock > 0:self.rock -= 1index = self.card_mbreakif self.card_m == 1 and self.paper > 0:self.paper -= 1index = self.card_mbreakif self.card_m == 2 and self.scissors > 0:self.scissors -= 1index = self.card_mbreakself.card_m = random.randint(0, 2)else:# 模拟人类,均衡出牌 - 给予数量多的牌种更高的打出权重card_n = self.rock + self.paper + self.scissorsindex = random.randint(1, card_n)  # 随机范围[1 - card_n]if 1 <= index <= self.rock:index = 0self.rock -= 1elif self.rock + 1 <= index <= self.paper + self.rock:index = 1self.paper -= 1elif self.paper + self.rock + 1 <= index <= self.scissors + self.paper + self.rock:index = 2self.scissors -= 1return indexdef meplaycard(self, card):  # 我的出牌if card == 0:self.rock -= 1elif card == 1:self.paper -= 1elif card == 2:self.scissors -= 1def isalive(self):  # 判断玩家是否GAME OVERif self.stars == 0:self.alive = Falseelif self.rock == 0 and self.paper == 0 and self.scissors == 0 and self.stars < 3:self.alive = Falseelif self.rock == 0 and self.paper == 0 and self.scissors == 0 and self.stars >= 3:self.win = Truereturn self.win, self.alivedef activity(self):  # 玩家积极性card_num = self.rock + self.paper + self.scissorsif card_num >= 10:return 100elif 6 <= card_num <= 9:return 50elif 4 <= card_num <= 5:return 25elif card_num == 3:return 10elif card_num == 2:return 5elif card_num == 1:return 1# 贷款def startloan(self, arrears):self.ltime = time.time()self.money = self.money + arrearsself.arrears = self.arrears + arrears# 利滚利def addinterest(self):etime = time.time()if etime - self.ltime >= 1:self.arrears = self.arrears + self.arrears * 0.005self.arrears_final = float(format(self.arrears, '.2f'))self.ltime = etime# 卡牌定价def buycard(self):self.buycard_num += 1if self.buycard_num >= 8:buyflag = 4  # 滚return 99999, 99999, buyflagif self.stars >= 3:buyflag = 0  # 5万,全买card_price = 5tprice = card_price * (self.rock + self.paper + self.scissors)elif self.rock <= 1 and self.paper <= 1 and self.scissors <= 1:buyflag = 1  # 不卖card_price = 99999tprice = 99999else:buyflag = 2  # 自己的理解if random.randint(1, 10) == 1:card_price = random.randint(10, 100)else:card_price = random.randint(0, 10)tprice = card_price * (self.rock + self.paper + self.scissors)return card_price, tprice, buyflag# 成为同伴def becomepartner(self):if self.stars >= 3:return 0elif self.stars >= 1:return (3 - self.stars) * 500# 与同伴一起消除卡牌def rmcwithpartner(self, ctype):if ctype == 0:if self.rock >= 2:self.rock -= 2elif ctype == 1:if self.paper >= 2:self.paper -= 2elif ctype == 2:if self.scissors >= 2:self.scissors -= 2elif ctype == 3:if self.rock >= 1 and self.paper >= 1:self.rock -= 1self.paper -= 1elif ctype == 4:if self.paper >= 1 and self.scissors >= 1:self.paper -= 1self.scissors -= 1elif ctype == 5:if self.scissors >= 1 and self.rock >= 1:self.scissors -= 1self.rock -= 1

rsp.py

import pygame
import random
from player import Player
import timeclass RSPGame:def __init__(self, player_number):self.m_width = 800  # 窗口大小self.m_height = 600self.size = (self.m_width, self.m_height)pygame.init()  # 初始化游戏self.window_main = pygame.display.set_mode(self.size)pygame.display.set_caption("Rock Paper Scissors")  # 标题self.quit = Falseself.clock = pygame.time.Clock()self.t_rock = 4 * player_numberself.t_paper = 4 * player_numberself.t_scissors = 4 * player_numberself.players = [Player(i) for i in range(player_number - 1)]  # 电脑玩家数self.players_list = [i for i in range(player_number - 1)]  # 电脑玩家id列表self.winner = []self.me = Player(99999)self.t_time = time.time()pygame.draw.rect(self.window_main, (240, 248, 255), (0, 0, self.m_width, self.m_height))  # 背景def gamestart(self):while True:  # 选择双方对战玩家p1 = random.choice(self.players_list)p2 = random.choice(self.players_list)if (self.players[p1].prflag is False) and (self.players[p2].prflag is False):if p1 == p2:continueactive1 = self.players[p1].activity()active2 = self.players[p2].activity()if random.randint(1, 100) <= active1 and random.randint(1, 100) <= active2:self.check(self.players[p1], self.players[p2])breakbreakself.me.addinterest()# 检查玩家出牌大小def check(self, player1, player2, mecard=0):p1_card = 0p2_card = 0if player1.id == 99999:p1_card = mecardif player2.human == 2:p2_card = player2.cardmaster(player1)else:p2_card = player2.playcard()passelse:# 赌怪打牌p1_master = False  # 初始化变量p2_master = False# masterif player1.human == 2 and player2.human != 2:p1_card = player1.cardmaster(player2)p1_master = Trueelif player1.human != 2 and player2.human == 2:p2_card = player2.cardmaster(player1)p2_master = True# normalif p1_master is False:p1_card = player1.playcard()if p2_master is False:p2_card = player2.playcard()winner = player1loser = player2if p1_card == 0 and p2_card == 2:winner = player1loser = player2elif p1_card == 2 and p2_card == 0:winner = player2loser = player1elif p1_card < p2_card:winner = player2loser = player1elif p1_card > p2_card:winner = player1loser = player2elif p1_card == p2_card:  # 卡牌相同时win, alive = player1.isalive()self.checkplayer(win, alive, player1)win, alive = player2.isalive()self.checkplayer(win, alive, player2)self.rvcard(p1_card)self.rvcard(p2_card)return 'p'winner.stars += 1win, alive = winner.isalive()self.checkplayer(win, alive, winner)loser.stars -= 1win, alive = loser.isalive()self.checkplayer(win, alive, loser)self.rvcard(p1_card)self.rvcard(p2_card)if player1.id == 99999 and winner.id == 99999:return 'y'else:return 'n'# 清除比赛队列中的胜利者与失败者def checkplayer(self, win, alive, player):if player.id != 99999:if win is True:self.winner.append(player)self.players_list.remove(player.id)if alive is False:   # 人死回收卡牌self.players_list.remove(player.id)self.t_rock -= player.rockself.t_paper -= player.paperself.t_scissors -= player.scissorsreturn 0else:if win is True:self.winner.append(player)return 1if alive is False:return 2# 回收卡牌 - 消除比赛过后的卡def rvcard(self, card):if card == 0:self.t_rock -= 1if card == 1:self.t_paper -= 1if card == 2:self.t_scissors -= 1# 卡牌交易def sellcards(self, buyer, seller, card_price, tprice, buyflag, card):if card == 999:r = seller.rockp = seller.papers = seller.scissorsseller.rock = 0seller.paper = 0seller.scissors = 0buyer.rock += rbuyer.paper += pbuyer.scissors += sif buyflag == 0:if buyer.money >= tprice:buyer.money -= tpricer = seller.rockp = seller.papers = seller.scissorsseller.rock = 0seller.paper = 0seller.scissors = 0win, alive = seller.isalive()self.checkplayer(win, alive, seller)  # seller直接获胜buyer.rock += rbuyer.paper += pbuyer.scissors += selif buyflag == 2:if buyer.money >= card_price:buyer.money -= card_priceif card == 0:seller.rock -= 1buyer.rock += 1elif card == 1:seller.paper -= 1buyer.paper += 1elif card == 2:seller.scissors -= 1buyer.scissors += 1# 惩罚def punishment(self, arrears, msg):organ = ["眼睛", "肾", "无期", "心脏", "生殖器", "阑尾", "鼻子", "大脑"]price = [500, 400, 0, 800, 1000, -100, 200, 99999]if arrears > 1000:idx = random.randint(0, len(organ) - 1)if idx == 3:arrears -= 1000years = int(arrears / 25)msg += "由于你负债太多,因此我们对你的身体进行检查,发现你竟然有两颗心脏,于是我们取走了一颗抵债1000万人民币。 \n"msg += "最终,你将在地下世界强制打工" + str(years) + "年,从此你开始了你的打工生涯。"elif idx == 2:years = int(arrears / 25)msg += "最终,你将在地下世界强制打工" + str(years) + "年,从此你开始了你的无期打工生涯, 可能或许大概应该你再也看不见昨日的太阳。"elif idx == 7:msg += "由于你负债太多,因此我们对你的身体进行检查,发现你的大脑非常适合一项秘密项目,于是我们清空了你的负债,但同时你的踪迹也变得无人知晓,只知道你被送往实验室的那天,一架火箭搭载着一个特殊物品前往深空。 \n"else:arrears -= price[idx]years = int(arrears / 25)msg += "由于你负债太多,因此我们对你的身体进行检查,发现你的身体一切正常,于是我们取走了你的一个" + str(organ[idx]) + \"抵债" + str(price[idx]) + "万人民币。 \n"msg += "最终,你将在地下世界强制打工" + str(years) + "年,从此你开始了你的打工生涯。"else:years = int(arrears / 25)msg += "最终,你将在地下世界强制打工" + str(years) + "年,从此你开始了你的打工生涯。"# 触发结局def triggeroutcome(self):win, alive = self.me.isalive()status = self.checkplayer(win, alive, self.me)isover = Falseovermsg = ["你赢了", "你输了"]overindex = 0msg_w_final = ""if status == 1:red_stars = self.me.stars - 3msg_w_final += "手牌打光的这一刻,你拥有" + str(self.me.stars) + \"颗星星。你成功在本次游戏中存活了下来 \n"isover = Trueoverindex = 0if len(self.me.partner_1) >= 1:msg_w_final += "但是,"for i in self.me.partner_1:msg_w_final += "你的同伴 " + str(i.name) + "缺少" + str(3 - i.stars) + "颗星星。 \n"if red_stars >= 3 - i.stars:red_stars -= 3 - i.starsmsg_w_final += "你给予了他缺少的星星,他顺利的通关了。 \n"else:msg_w_final += "你已经没有多余的星星给他,你想抛弃他自己通关,结果被他发现打了一顿,并抢走了你身上的所有星星。 \n"if self.me.arrears > 0:msg_w_final += "最后判定你在本次游戏中失败,你的500万贷款无法被清空,加之在游戏中你的贷款共负债" + \str(int(self.me.arrears) - int(self.me.money) + 500) + "万人民币。 \n"self.punishment(int(self.me.arrears) - int(self.me.money) + 500, msg_w_final)else:msg_w_final += "最后判定你在本次游戏中失败,你的500万贷款无法被清空,你将被圈禁在地下世界挖矿,强制打工 20 年来还清贷款。 \n"msg_w_final += "你也顺利将自己的500万贷款消除了。 \n"if red_stars >= 1:self.me.money += red_stars * 500msg_w_final += "然后你通过拍卖,将多余的星星兑换成了" + str(red_stars * 500) + \"万人民币。 \n"if len(self.me.partner_0) >= 1:for i in self.me.partner_0:msg_w_final += "按照约定,你支付给你的同伴" + str(i.name) + "100万人民币。"if self.me.money >= 100:self.me.money -= 100msg_w_final += "\n"else:msg_w_final += "然而你已经没钱支付了,看在你们一起奋斗的情分上以及你帮助他清空了他的贷款,他不再向你索求报酬。 \n"if self.me.arrears > 0:msg_w_final += "由于你在游戏中贷款,最后需要扣除你的贷款和利息共计" + str(int(self.me.arrears)) + "万人民币。 \n"self.me.money -= int(self.me.arrears)if self.me.money >= 0:msg_w_final += "最终,你成功清除了所有贷款,并且赚取了" + str(self.me.money) + "万人民币下船,从此开启了新的人生。"else:msg_w_final += "最终,你虽然清除了之前的500万贷款,但是却背上了" + str(-1 * self.me.money) + "万的新贷款,从此开启了新的还贷人生。"else:msg_w_final += "最终,你成功清除了所有贷款,并且赚取了" + str(self.me.money) + "万人民币下船,从此开启了新的人生。"elif status == 2:isover = Trueoverindex = 1msg_w_final += "看到你的失败,你的同伴 "for i in self.me.partner_0:msg_w_final += str(i.name) + " "msg_w_final += "也不管与你之前约定的100万酬金了,反正他们已经达成了通关条件,撒腿就跑了。 \n"for i in self.me.partner_1:if 3 - i.stars <= self.me.stars:msg_w_final += "你的同伴" + str(i.name) + "非常恼怒,抢走了你的" + str(3 - i.stars) + "颗星星,逃走了。 \n"else:msg_w_final += "因为你的失败,你的同伴" + str(i.name) + "将被带到地下世界,强制打工 20 年来偿还贷款。 \n"if self.me.arrears > 0:msg_w_final += "最后判定你在本次游戏中失败,你的500万贷款无法被清空,加之在游戏中你的贷款共负债" + \str(int(self.me.arrears) - int(self.me.money) + 500) + "万人民币。 \n"self.punishment(int(self.me.arrears) - int(self.me.money) + 500, msg_w_final)else:msg_w_final += "最后判定你在本次游戏中失败,你的500万贷款无法被清空,你将被圈禁在地下世界挖矿,强制打工 20 年来还清贷款。 \n"msg_w_final += "从此你过上了猪狗不如的生活。"if isover is True:self.window_main.fill((0, 0, 0))while not self.quit:for event in pygame.event.get():if event.type == pygame.QUIT:self.quit = Truefont = pygame.font.SysFont("simsunnsimsun", 12)msg_w = msg_w_final.split('\n')pygame.draw.rect(self.window_main, (255, 255, 255), (0, 0, self.m_width, self.m_height))h = 0for m in msg_w:msg = font.render(m, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(msg, (50, 50 + h))h += 50self.clock.tick(60)  # 帧频pygame.display.update()def run(self):font = pygame.font.Font(None, 32)cfont = pygame.font.SysFont("simsunnsimsun", 16)pygame.draw.rect(self.window_main, (240, 248, 255), (600, 10, 60, 20))loan_label = cfont.render("贷款/万 :", True, (255, 0, 0), (240, 248, 255))self.window_main.blit(loan_label, (600, 25))loan_input_box = pygame.Rect((680, 20, 100, 25))loan_color_inactive = pygame.Color('lightskyblue3')loan_color_active = pygame.Color('dodgerblue2')color = loan_color_inactiveactive = Falsetext = ''loan_flag = Falsewhile not self.quit:if loan_flag is True:font = pygame.font.Font(None, 32)cfont = pygame.font.SysFont("simsunnsimsun", 16)pygame.draw.rect(self.window_main, (240, 248, 255), (600, 10, 60, 20))loan_label = cfont.render("贷款/万 :", True, (255, 0, 0), (240, 248, 255))self.window_main.blit(loan_label, (600, 25))loan_input_box = pygame.Rect((680, 20, 100, 25))loan_color_inactive = pygame.Color('lightskyblue3')loan_color_active = pygame.Color('dodgerblue2')color = loan_color_inactiveactive = Falsetext = ''loan_flag = False# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:  # 退出self.quit = Trueif event.type == pygame.MOUSEBUTTONDOWN:if loan_input_box.collidepoint(event.pos):active = not activeelse:active = Falsecolor = loan_color_active if active else loan_color_inactivex, y = pygame.mouse.get_pos()player_rect_row = 0player_rect_col = 0for p in self.players:oflag = Falserow = 30 + player_rect_row * 80col = 100 + player_rect_col * 30if row < x < row + 75 and col < y < col + 25 and p.alive is True:  # face to one player 页面print(p.name)self.window_main.fill((0, 0, 0))while not self.quit:for event in pygame.event.get():if event.type == pygame.QUIT:self.quit = Trueif event.type == pygame.MOUSEBUTTONDOWN and p.prflag is True:x, y = pygame.mouse.get_pos()if 160 < x < 240 and 450 < y < 570:breakelif 360 < x < 440 and 450 < y < 570:breakelif 560 < x < 640 and 450 < y < 570:breakif event.type == pygame.MOUSEBUTTONDOWN:  # 我来打牌x, y = pygame.mouse.get_pos()if 160 < x < 240 and 450 < y < 570:card = 0elif 360 < x < 440 and 450 < y < 570:card = 1elif 560 < x < 640 and 450 < y < 570:card = 2# 购买卡牌elif 730 < x < 790 and 10 < y < 30:self.window_main.fill((0, 0, 0))buyisover = Falsecard_price, tprice, buyflag = p.buycard()numfont = pygame.font.Font(None, 64)cfont = pygame.font.SysFont("simsunnsimsun", 12)while not self.quit:for event in pygame.event.get():if event.type == pygame.QUIT:  # 退出self.quit = Trueif event.type == pygame.MOUSEBUTTONDOWN:x, y = pygame.mouse.get_pos()if 730 < x < 790 and 10 < y < 30:  # 返回buyisover = Truebreakelif buyflag == 0 and 360 < x < 440 and 240 < y < 360:  # 全买self.sellcards(self.me, p, card_price, tprice, buyflag, 99999)buyisover = Truebreakelif buyflag == 2:  # 单买if 160 < x < 240 and 240 < y < 360:self.sellcards(self.me, p, card_price, tprice, buyflag, 0)buyisover = Truebreakelif 360 < x < 440 and 240 < y < 360:self.sellcards(self.me, p, card_price, tprice, buyflag, 1)buyisover = Truebreakelif 560 < x < 640 and 240 < y < 360:self.sellcards(self.me, p, card_price, tprice, buyflag, 2)buyisover = Truebreakif buyflag == 0:pygame.draw.rect(self.window_main, (255, 255, 255), (360, 240, 80, 120))  # 价格msg = "全部购买,每张: " + str(card_price) + "万人民币;总价格: " + str(tprice) + "万人民币"me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (360, 240))elif buyflag == 2:msg = "单价: " + str(card_price) + "万人民币"pygame.draw.rect(self.window_main, (255, 255, 255), (160, 240, 80, 120))  # 拳头牌价格me_rock_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_rock_num, (160, 240))pygame.draw.rect(self.window_main, (255, 255, 255), (360, 240, 80, 120))  # 布牌价格me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (360, 240))pygame.draw.rect(self.window_main, (255, 255, 255), (560, 240, 80, 120))  # 剪刀牌价格me_scissors_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_scissors_num, (560, 240))elif buyflag == 1:pygame.draw.rect(self.window_main, (255, 255, 255), (360, 240, 80, 120))msg = "不卖啦,亲"me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (360, 240))elif buyflag == 4:pygame.draw.rect(self.window_main, (255, 255, 255), (360, 240, 80, 120))msg = "你点你马那?还买不买?搁着卡BUG呢?不买滚!"me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (360, 240))pygame.draw.rect(self.window_main, (255, 255, 255), (730, 10, 60, 20))enemy_card_num = cfont.render("离开", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 10))pygame.display.flip()self.clock.tick(60)  # 帧频pygame.display.update()if buyisover is True:self.window_main.fill((0, 0, 0))breakcontinue# 招募同伴elif 730 < x < 790 and 40 < y < 60 and p.prflag is False:self.window_main.fill((0, 0, 0))recisover = Falsenumfont = pygame.font.Font(None, 64)cfont = pygame.font.SysFont("simsunnsimsun", 12)partner = p.becomepartner()while not self.quit:for event in pygame.event.get():if event.type == pygame.QUIT:  # 退出self.quit = Trueif event.type == pygame.MOUSEBUTTONDOWN:x, y = pygame.mouse.get_pos()if 730 < x < 790 and 10 < y < 30:  # 返回recisover = Truebreakif 100 < x < 500 and 200 < y < 350:  # 招募if partner == 0:self.me.partner_0.append(p)else:self.me.partner_1.append(p)p.prflag = Trueself.sellcards(self.me, p, 0, 0, 9, card=999)recisover = Truebreakif partner == 0:pygame.draw.rect(self.window_main, (255, 255, 255), (100, 200, 400, 150))msg = "$:  收取所有手牌,游戏结束支付100万人民币"me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (100, 200))else:pygame.draw.rect(self.window_main, (255, 255, 255), (100, 200, 400, 150))msg = "$:  收取所有手牌,并协助其通关"me_paper_num = cfont.render(msg, True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (100, 200))pygame.draw.rect(self.window_main, (255, 255, 255), (730, 10, 60, 20))enemy_card_num = cfont.render("离开", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 10))pygame.display.flip()self.clock.tick(60)  # 帧频pygame.display.update()if recisover is True:self.window_main.fill((0, 0, 0))breakcontinue# 消除卡牌elif 730 < x < 790 and 40 < y < 60 and p.prflag is True:self.window_main.fill((0, 0, 0))remisover = Falsenumfont = pygame.font.Font(None, 64)cfont = pygame.font.SysFont("simsunnsimsun", 12)while not self.quit:for event in pygame.event.get():if event.type == pygame.QUIT:  # 退出self.quit = Trueif event.type == pygame.MOUSEBUTTONDOWN:x, y = pygame.mouse.get_pos()if 730 < x < 790 and 10 < y < 30:  # 返回remisover = Truebreakif 60 < x < 160 and 60 < y < 210:self.me.rmcwithpartner(0)elif 310 < x < 410 and 60 < y < 210:self.me.rmcwithpartner(1)elif 560 < x < 660 and 60 < y < 210:self.me.rmcwithpartner(2)elif 60 < x < 160 and 410 < y < 560:self.me.rmcwithpartner(3)elif 310 < x < 410 and 410 < y < 560:self.me.rmcwithpartner(4)elif 560 < x < 660 and 410 < y < 560:self.me.rmcwithpartner(5)pygame.draw.rect(self.window_main, (211, 211, 211), (50, 50, 100, 150))  # r - rpygame.draw.rect(self.window_main, (255, 255, 255), (60, 60, 100, 150))rr = cfont.render("石头-石头", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(rr, (60, 60))pygame.draw.rect(self.window_main, (211, 211, 211), (300, 50, 100, 150))  # p - ppygame.draw.rect(self.window_main, (255, 255, 255), (310, 60, 100, 150))pp = cfont.render("布-布", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(pp, (310, 60))pygame.draw.rect(self.window_main, (211, 211, 211), (550, 50, 100, 150))  # s - spygame.draw.rect(self.window_main, (255, 255, 255), (560, 60, 100, 150))ss = cfont.render("剪刀-剪刀", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(ss, (560, 60))pygame.draw.rect(self.window_main, (211, 211, 211), (50, 400, 100, 150))  # r - ppygame.draw.rect(self.window_main, (255, 255, 255), (60, 410, 100, 150))rp = cfont.render("石头-布", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(rp, (60, 410))pygame.draw.rect(self.window_main, (211, 211, 211), (300, 400, 100, 150))  # p - spygame.draw.rect(self.window_main, (255, 255, 255), (310, 410, 100, 150))ps = cfont.render("布-剪刀", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(ps, (310, 410))pygame.draw.rect(self.window_main, (211, 211, 211), (550, 400, 100, 150))  # s - rpygame.draw.rect(self.window_main, (255, 255, 255), (560, 410, 100, 150))sr = cfont.render("剪刀-石头", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(sr, (560, 410))pygame.draw.rect(self.window_main, (255, 255, 255), (100, 280, 120, 40))  # 我的rps数量me_rock_num = numfont.render(str(self.me.rock), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_rock_num, (100, 280))pygame.draw.rect(self.window_main, (255, 255, 255), (300, 280, 120, 40))me_paper_num = numfont.render(str(self.me.paper), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (300, 280))pygame.draw.rect(self.window_main, (255, 255, 255), (500, 280, 120, 40))me_scissors_num = numfont.render(str(self.me.scissors), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_scissors_num, (500, 280))pygame.draw.rect(self.window_main, (255, 255, 255), (730, 10, 60, 20))enemy_card_num = cfont.render("离开", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 10))pygame.display.flip()self.clock.tick(60)  # 帧频pygame.display.update()if remisover is True:self.window_main.fill((0, 0, 0))breakcontinueelif 730 < x < 790 and 70 < y < 90:  # 返回oflag = Truebreakelse:breakself.me.meplaycard(card)rel = self.check(self.me, p, card)if rel == 'p':print("平手")elif rel == 'y':print("你赢了")elif rel == 'n':print("你输了")# 触发结局self.triggeroutcome()if p.id not in self.players_list:oflag = Truebreaknumfont = pygame.font.Font(None, 64)font = pygame.font.Font(None, 16)cfont = pygame.font.SysFont("simsunnsimsun", 12)pygame.draw.rect(self.window_main, (255, 255, 255), (730, 10, 60, 20))enemy_card_num = cfont.render("购买卡牌", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 10))if p.prflag is False:pygame.draw.rect(self.window_main, (255, 255, 255), (730, 40, 60, 20))enemy_card_num = cfont.render("招募同伴", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 40))else:pygame.draw.rect(self.window_main, (255, 255, 255), (730, 40, 60, 20))enemy_card_num = cfont.render("消除卡牌", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 40))pygame.draw.rect(self.window_main, (255, 255, 255), (730, 70, 60, 20))enemy_card_num = cfont.render("离开", True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 70))pygame.draw.rect(self.window_main, (255, 255, 255), (10, 10, 60, 20))  # 敌方星星数量enemy_card_num = font.render(str(p.stars), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (10, 10))pygame.draw.rect(self.window_main, (255, 255, 255), (730, 570, 60, 20))  # 我方星星数量enemy_card_num = font.render(str(self.me.stars), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (730, 570))pygame.draw.rect(self.window_main, (255, 255, 255), (360, 20, 80, 120))  # 敌方纸牌数量enemy_card_num = numfont.render(str(p.rock + p.paper + p.scissors), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(enemy_card_num, (360, 20))pygame.draw.rect(self.window_main, (255, 255, 255), (160, 450, 80, 120))  # 我方拳头牌剩余数量me_rock_num = numfont.render(str(self.me.rock), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_rock_num, (160, 450))pygame.draw.rect(self.window_main, (255, 255, 255), (360, 450, 80, 120))  # 我方布牌剩余数量me_paper_num = numfont.render(str(self.me.paper), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_paper_num, (360, 450))pygame.draw.rect(self.window_main, (255, 255, 255), (560, 450, 80, 120))  # 我方剪刀牌剩余数量me_scissors_num = numfont.render(str(self.me.scissors), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(me_scissors_num, (560, 450))self.clock.tick(60)  # 帧频pygame.display.update()self.me.addinterest()if oflag is True:self.window_main.fill((0, 0, 0))pygame.draw.rect(self.window_main, (240, 248, 255), (0, 0, self.m_width, self.m_height))  # 背景loan_flag = Truebreakbreakplayer_rect_row += 1if player_rect_row == 9:player_rect_row = 0player_rect_col += 1if event.type == pygame.KEYDOWN:if active:if event.key == pygame.K_RETURN:  # 贷款print(text)arrears = float(text)self.me.startloan(arrears)text = ''elif event.key == pygame.K_BACKSPACE:text = text[:-1]else:text += event.unicodetxt_surface = font.render(text, True, color)loan_input_x = loan_input_box.x + 5self.window_main.blit(txt_surface, (loan_input_x, loan_input_box.y + 5))pygame.draw.rect(self.window_main, color, loan_input_box, 2)# 渲染pygame.draw.rect(self.window_main, (255, 255, 255), (20, 20, 75, 25))  # 倒计时numfont = pygame.font.Font(None, 16)t_rock = numfont.render(str(self.t_rock), True, (255, 0, 0), (255, 255, 0))  # 拳头牌总数量t_rock_label = numfont.render("T ROCK", True, (255, 0, 0), (255, 255, 0))  # 拳头pygame.draw.rect(self.window_main, (255, 255, 255), (100, 20, 75, 25))self.window_main.blit(t_rock_label, (125, 27))self.window_main.blit(t_rock, (100, 20))t_paper = numfont.render(str(self.t_paper), True, (255, 0, 0), (255, 255, 0))  # 布牌总数量t_paper_label = numfont.render("T PAPER", True, (255, 0, 0), (255, 255, 0))  # 布牌pygame.draw.rect(self.window_main, (255, 255, 255), (200, 20, 75, 25))self.window_main.blit(t_paper_label, (225, 27))self.window_main.blit(t_paper, (200, 20))t_scissors = numfont.render(str(self.t_scissors), True, (255, 0, 0), (255, 255, 0))  # 剪刀牌总数量t_scissors_label = numfont.render("T SCI", True, (255, 0, 0), (255, 255, 0))  # 剪刀pygame.draw.rect(self.window_main, (255, 255, 255), (300, 20, 75, 25))self.window_main.blit(t_scissors_label, (325, 27))self.window_main.blit(t_scissors, (300, 20))pygame.draw.rect(self.window_main, (255, 255, 255), (20, 60, 75, 25))me_rock = numfont.render(str(self.me.rock), True, (255, 0, 0), (255, 255, 0))  # 我的拳头牌总数量me_rock_label = numfont.render("M ROCK", True, (255, 0, 0), (255, 255, 0))  #pygame.draw.rect(self.window_main, (255, 255, 255), (100, 60, 75, 25))self.window_main.blit(me_rock_label, (125, 67))self.window_main.blit(me_rock, (100, 60))me_paper = numfont.render(str(self.me.paper), True, (255, 0, 0), (255, 255, 0))  # 我的布牌总数量me_paper_label = numfont.render("M PAPER", True, (255, 0, 0), (255, 255, 0))  #pygame.draw.rect(self.window_main, (255, 255, 255), (200, 60, 75, 25))self.window_main.blit(me_paper_label, (225, 67))self.window_main.blit(me_paper, (200, 60))me_scissors = numfont.render(str(self.me.scissors), True, (255, 0, 0), (255, 255, 0))  # 我的剪刀牌总数量me_scissors_label = numfont.render("M SCI", True, (255, 0, 0), (255, 255, 0))  #pygame.draw.rect(self.window_main, (255, 255, 255), (300, 60, 75, 25))self.window_main.blit(me_scissors_label, (325, 67))self.window_main.blit(me_scissors, (300, 60))me_arrears = numfont.render(str(self.me.arrears_final), True, (255, 0, 0), (255, 255, 0))  # 我的贷款pygame.draw.rect(self.window_main, (255, 255, 255), (400, 60, 75, 25))self.window_main.blit(me_arrears, (400, 60))me_money = numfont.render(str(self.me.money), True, (255, 0, 0), (255, 255, 0))  # 我的钱pygame.draw.rect(self.window_main, (255, 255, 255), (500, 60, 75, 25))self.window_main.blit(me_money, (500, 60))pygame.display.flip()namefont = pygame.font.SysFont("simsunnsimsun", 12)player_rect_row = 0player_rect_col = 0for i in self.players:  # 玩家列表row = 30 + player_rect_row * 80col = 100 + player_rect_col * 30if i.alive is True:pygame.draw.rect(self.window_main, (255, 255, 255), (row, col, 75, 25))else:pygame.draw.rect(self.window_main, (220, 220, 220), (row, col, 75, 25))name = namefont.render(str(i.name), True, (255, 0, 0), (255, 255, 0))self.window_main.blit(name, (row, col))player_rect_row += 1if player_rect_row == 9:player_rect_row = 0player_rect_col += 1self.clock.tick(60)  # 帧频pygame.display.update()self.gamestart()if len(self.players_list) <= 1:breakovertime = time.time() - self.t_timeif overtime >= 600:print("Time Out")breakfor w in self.winner:print(w.name + " --- " + str(w.stars))print("胜利人数:", len(self.winner))etime = time.time()print(etime - self.t_time)print(self.me.arrears)if __name__ == "__main__":rsp = RSPGame(100)rsp.run()

pygame 等有缘人接盘相关推荐

  1. win10从旧的固态硬盘迁移系统到新的固态硬盘,开机黑屏LOGO处转圈,并启动不了,已解决,特写此贴,供急需解决该问题的有缘人参考!

    先说明下我的情况: 我的是华硕gl553vd笔记本电脑(128g固态+1T机械),17年入手,可以算比较老的了!最近觉得c盘真的不够用了,从只剩9个g的容量清理垃圾到14个g,但是一想以后可能还会这样 ...

  2. 分享给有缘人——给明年依旧年轻的我们:欲望、外界、标签、天才、时间、人生目标、现实、懊悔、和经历...

    博文:给明年依旧年轻的我们:欲望.外界.标签.天才.时间.人生目标.现实.懊悔.和经历 ( http://blog.sina.com.cn/s/blog_6e8e05ac0100wu4h.html   ...

  3. c语言炒股软件公式,20年的炒股实战公式让你认清股市本质 想不发财就难 源码放送 送给有缘人...

    好股票软件下载网(www.goodgupiao.com)提示:您正在下载的是:20年的炒股实战公式让你认清股市本质 想不发财就难 源码放送 送给有缘人 红线低位筹码密集 绿线高位筹码密集 白线在低位是 ...

  4. 熹妃q传怎么解除有缘人

    熹妃q传怎么解除有缘人,这也是一款非常火的养成游戏,那么玩家们在游戏中应该怎么解除有缘人呢,相信还有些小伙伴不清楚.所以下面就为大家带来了解除情侣关系的方法介绍! 熹妃q传怎么解除有缘人 玩家们在烟缘 ...

  5. [IOS APP]佛度有缘人

    此app中收录了<佛度有缘人>. 有人问佛:为何不赐予我与别人一样闭月羞花的容颜?你真不公平! 佛曰:你怎么不知?那些只是昙花一现的东西,是用来蒙蔽世俗眼睛的障碍物,没有什么美可以抵过一颗 ...

  6. 【Python获取相亲网站数据】马上都元宵节了,还在相亲,看看某相亲网站有没有那个有缘人。

    前言 马上都元宵节了,还在相亲,看看某相亲网站有没有那个有缘人.今天我们来爬取某相亲网站获取我们想要的数据,比如说,对方的姓名,年龄,身高,体重等等.今天我们主要使用CSS选择的方法来匹配我们想要的数 ...

  7. 老夫花了 3 天时间整理了一份史上最强 Java 学习路线图,送给有缘人!

    趁热打铁,二哥就来给需要的同学准备一份新鲜出炉的 Java 学习路线图吧,送给有缘人. 第一部分:Java 基础篇 这个阶段就是编程入门,掌握 Java 这门编程语言的基本语法,为后面的修行之路打好基 ...

  8. 谷歌扔下芯片核弹:开源全球首个可制造的PDK,免费帮有缘人实现造芯梦想

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你有想过自己制造芯片吗? ...

  9. 你是为了什么而努力?不放弃才是我们唯一的选择,加油,每一个有缘人

    这篇博客就不写什么知识点了,就是说下自己目前的心态.(可以看到的人说明也是一种缘分,希望你不要放弃,我们一起加油) 没有想赢 只是不想输 首先自报家门 我是专科,今年大三,等到六月份的时候就要毕业了, ...

最新文章

  1. python入门(13)获取函数帮助和调用函数
  2. PMCAFF | 产品微操的艺术:提高核心指标的5个需求原理
  3. SAP HR系统如何处理员工月中调动问题
  4. android LinkedList的基本用法
  5. 列表推导式(Python)
  6. 大津阈值分割matlab实验,OTSU(大津法)分割源程序(MATLAB版)
  7. 信息学奥赛一本通(2029:【例4.15】水仙花数)
  8. Dart 10-Day
  9. 将Halcon导出的多个dxf文件合并成一个分图层的dxf文件
  10. 卡住 安装_【书中有路】弹簧式安全阀结构原理、故障解析、安装要点
  11. 虚拟机网卡的相关知识
  12. Python 爬虫抓取网站汇率并将结果保存到文件
  13. android x86_646,雷电模拟器4.0x86_64位版本即android 7.1 xposed安装
  14. 斯隆论社会责任:德鲁克日志之四月二十五日
  15. 基于 RTS 超低延时直播优化强互动场景体验
  16. 如何用计算机装手机系统,教你在手机上安装Windows系统
  17. 红蓝攻防中蓝队职责(防守方)
  18. 个人比较喜欢的flash小游戏
  19. RS485 Modbus转以太网MQTT
  20. MySQL高级篇——聊聊MySQL的存储引擎

热门文章

  1. 光功率 博科交换机_华为交换机查看光功率的方法请大神指教
  2. php手机i选择图片多选,自定义照片选择器(可多选)
  3. 计算机专业英语教学反思,高中英语课堂教学反思
  4. USB2.0挂载FatFs文件系统
  5. 地理坐标系_GCS汇总
  6. OLTP、OLAP与HTAP
  7. cpp enum enum class
  8. 常用电平标准(TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232
  9. 内网工具viper的介绍与配置简介
  10. Visual studio 词汇