编写小游戏

开发中的类的继承

  • 灵活使用函数和函数的继承以及类class的实例
import time
import randomclass WeGame(object):def __init__(self, username, sex, boold_num=2000, money=800, agg=0, pre=0):self.username = usernameself.sex = sexself.boold_num = boold_numself.money = moneyself.agg = aggself.pre = preself.room = Noneself.Sword_info = []self.Sword()# def __new__(cls, *args, **kwargs):#     return cls.Come_game(cls)# 初始金币def Come_game(self):print("答题得金币,题号有【1、2、3】")_num = input("请输入你想答得题目(谨慎选择!!!):")if _num == '1':print("斐波拉契数列的第20位是多少?")tmp1 = input("你的答案:")if tmp1 == '6765':self.money += 600else:self.money += 0print("回答错误,答案是6765")print("你的金币为:", self.money)return self.Sword()elif _num == '2':print("英雄联盟中召唤师峡谷的战役中,双方都分有几个位置?")tmp2 = input("你的答案:")if tmp2 == '5':self.money += 600else:self.money += 0print("回答错误,答案是5")print("你的金币为:", self.money)return self.Sword()elif _num == '3':print("1+1等于几?")tmp3 = input("你的答案:")if tmp3 == '2':self.money += 600else:print("你没救了!")self.money -= 600print("你的金币为:", self.money)return self.Sword()# 武器装备信息def Sword(self):print('_' * 50)print('*' * 50)print("剑铺:2019/1/13剑铺开张!(七剑下天山)\n""武器信息:\n""莫问剑:【功】:90,【守】:15,【价】:800¥\n""游龙剑:【功】:95,【守】:5 ,【价】:700¥\n""青干剑:【功】:70,【守】:20,【价】:600¥\n""竞星剑:【功】:80,【守】:10,【价】:600¥\n""日月剑:【功】:85,【守】:5 ,【价】:600¥\n""舍神剑:【功】:85,【守】:5 ,【价】:600¥\n""天瀑剑:【功】:90,【守】:0 ,【价】:600¥\n")print('_' * 50)print('*' * 50)"""进入剑铺购买相关的武器,金币足够可以购买多把武器按e退出剑铺"""while True:print("-"*50)print("$_$金币足够可以购买多把武器按e或者exit退出剑铺$_$")ret = input("$你$想$购$买$的$武$器$是$:")print("-"*50)if ret == '莫问剑':if self.money >= 800:self.agg += 90self.pre += 15self.money -= 800print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit' or 'e':exit()elif ret == '游龙剑':if self.money >= 700:self.agg = 95self.pre = 5self.money -= 700print("背包:攻击力《{}》|防御力《{}》|血量《{}》|金币《{}》".format(self.agg, self.pre, self.boold_num, self.money))self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit' or 'e':print()exit()elif ret == '青干剑':if self.money >= 600:self.agg += 70self.pre += 20self.money -= 600print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit':exit()elif ret == '竞星剑':if self.money >= 600:self.agg += 80self.pre += 10self.money -= 600print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit':exit()elif ret == '日月剑':if self.money >= 600:self.agg += 85self.pre += 5self.money -= 600print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit':exit()elif ret == '舍神剑':if self.money >= 600:self.agg += 85self.pre += 5self.money -= 600print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit':exit()elif ret == '天瀑剑':if self.money >= 600:self.agg = 90self.pre = 5self.money -= 600print(f"背包:攻击力《{self.agg}》|防御力《{self.pre}》|血量《{self.boold_num}》|金币《{self.money}》")self.Sword_info.append(ret)else:print("金币不足!!!,可按1进入答题充值")ret2 = input("输入1进入答题,输入exit退出:")if ret2 == '1':self.Come_game()elif ret2 == 'exit':exit()elif ret == 'e':print("本次购买完毕,退出剑铺!")breakelse:print("没有这把剑,真j!")continueall_sword = [i for i in self.Sword_info]print("||{}||:你的武器库中有{}把剑:{}".format(self.username, len(self.Sword_info), all_sword))# 战斗# def Battle(self, obj1):def Battle(self, obj):if self.room != None and self.room == obj.room:obj.boold_num = obj.boold_num - self.agg + obj.pretime.sleep(random.randint(1, 2))print("++++++++++++++++++++++++++++++++++++++++++++++++++\n")print(f"{self.username})-=>{obj.username}|{self.username}血量:{self.boold_num}|{obj.username}血量:{obj.boold_num}\n")print("+" * 50)else:print("两个人不在同一个房间")#####################################################################
# _____________________________________________________________________
#####################################################################class Room(object):MAX = 2def __init__(self, room_name, ):# self.room_id = "0"self.room_name = room_nameself.room_users = {}# key => username, value => user_object instance# 这里是玩家加入,加入房间后记录相关信息,存入字典中def join(self, user_obj):self.room_users[user_obj.username] = user_objprint(self.room_users)user_obj.room = self.room_name# 当玩家数达到房间上限时,自动启动游戏开始的方法if len(self.room_users) == Room.MAX:print("房间已满!")self.Game_start()# 设置满员后,禁止再有玩家加入# 在room_users字典中删除,使得长度为2,可调用游戏开始Game_start的方法elif len(self.room_users) == Room.MAX + 1:print("房间已满!禁止加入")self.room_users.pop(user_obj.username)# 游戏开始:def Game_start(self):user1 = list(self.room_users.values())[0]user2 = list(self.room_users.values())[1]"""进入到游戏开始方法时:可在输入框输入【y或者n】来控制是否开始战斗y:开始战斗n:退出游戏"""ret = input("是否开始战斗?y:开始,n:退出").upper()if ret == 'Y':while True:if user1.boold_num > 0 and user2.boold_num > 0:"""设置两人对战随机进攻的机制,导入random模块,随机出现单数和双数来决定是谁来攻击谁"""if random.randint(1, 4) % 2 == 0:user1.Battle(user2)# print(f"{p1.username})->{p2.username}---{p2.username}血量剩余{p2.boold_num}")elif random.randint(1, 4) % 2 == 1:user2.Battle(user1)# print(f"{p1.username})->{p2.username}---{p2.username}血量剩余{p2.boold_num}")# 当有一方的血量小于等于0时,则游戏结束else:if user1.boold_num <= 0:print(f"{user2.username}赢得范闲!")if user2.boold_num <= 0:print(f"{user1.username}赢得范闲!")breakelif ret == 'N':exit()else:print("输入有误,重新输入!")self.Game_start()if __name__ == '__main__':import randomp1 = WeGame('林婉儿', 'm')room1 = Room("醉仙居")room1.join(p1)print("所在房间:", p1.room)print("&" * 50)p2 = WeGame('司理理', 'm')room1.join(p2)print("所在房间:", p2.room)print("&" * 50)# p1.attach(p2)# p2.attach(p1)# print(p1.money)# user1 = Role()

python编写多人对战小游戏相关推荐

  1. 【六一特别文章】Python编写一个六一儿童节问答小游戏及趣味比赛

    随着六一儿童节的到来,我们可以为孩子们编写一个有趣的小游戏,让他们在游戏中学习有关六一儿童节的知识.本文将介绍如何用Python编写一个六一儿童节问答小游戏及趣味比赛. 首先,我们需要准备一些有关六一 ...

  2. 多人对战小游戏快速开发实例分享(附源码)

    前言:该游戏项目主要是基于前端引擎Cocos Creator开发,涉及后端联网的部分,则通过接入Matchvs SDK完成快速开发工作. 准备工作:相关引擎工具引擎下载及指南 Matchvs Java ...

  3. python实现回合制对战小游戏

    回合制对战游戏 1.创建角色:姓名.性别 2.创建房间: 角色可加入房间 房间内的人可互打 房间上限3人 3.战斗: 装备.默认血量.被正常攻击掉血与有装备掉血不同 #回合制对战游戏 #角色,房间,战 ...

  4. python实现简单的对战小游戏(王者荣耀简化版)

    直接上代码: '' 游戏 1.选择人物 2.购买武器 金币 3.打仗 赢 得金币 4.选择删除武器 5.查看游戏 6.退出游戏 ''' import random print('*'*40) prin ...

  5. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  6. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  7. Python编写人机对战小游戏(抓狐狸)(2)

    封面图片:<中学生可以这样学Python>,董付国.应根球著,清华大学出版社 =========== 很久很久以前,在公众号里推送过一个抓狐狸游戏,详见Python编写人机对战小游戏(抓小 ...

  8. python自学 适合新手的 python人机对战小游戏

    目录 前言 一,游戏规则 二,游戏拆解: 版本1.0(自定属性,人工PK) 版本2.0(随机属性,自动PK) 版本3.0(打印结果,三局两胜) 前言 有很多人问,怎样学python可以进步最快,我回顾 ...

  9. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

最新文章

  1. 用ext_skel,实现一个PHP扩展,添加到PHP并调用
  2. MySQL基础篇:数据定义语言DDL
  3. (初级)数字信号处理目录(不只是目录)
  4. 4.2w Star的文件同步工具,比VIP网盘还好用!
  5. IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC)
  6. 消费金融和信用卡本质上的区别是什么?
  7. Java泛型用于方法,类和接口
  8. oracle主从表分离怎么实时更新数据_高可用数据库UDB主从复制延时的解决
  9. 米斯特白帽培训讲义(v2)漏洞篇 SSRF
  10. Android 应用开发(第2章)---如何增加menu菜单
  11. 偷天换日?公众号广告新骗局 被坑的多是运营
  12. BZOJ 3779 LCT 线段树 DFS序 坑
  13. java中native的详解
  14. SpringMVC XXX-servlet.xml ApplicationContext.xml
  15. GNSS最终、快速、超快速星历下载地址汇总
  16. Mybatis——拦截器Interceptor
  17. 现代高频开关电源技术与应用随堂练习_六款简单的开关电源电路设计原理图详解...
  18. IDEA 打开窗口切换的快捷键
  19. 不支持虚拟化的cpu如何开VM虚拟机(不支持,即“主机不支持Intel VT-x,不是支持Intel VT-x,但Intel VT-x禁处于禁用状态!!!!!!)
  20. [实例]【EXCEL VBA】如何在excel里嵌入网页,动态显示网页 未完成

热门文章

  1. 【中级软考—软件设计师】2操作系统2.2进程的概念【】:2.2.1进程的概念
  2. 机器学习在水文地质方面的文章--文献阅读
  3. Excel VBA批量格式转换:xlsx转pdf、xls、csv以及反向转换
  4. DNS轮询,一个域名配多个IP实现负载均衡的研究
  5. apple被恶意锁住apple id如何解除
  6. 互联网人的时间 vs 普通人的时间
  7. 计算机规则英语作文,计算机信息技术(五笔及中英文打字测试试题).doc
  8. 2022工具钳工(中级)操作证考试题库及答案
  9. (1/7)Electron教程(一)什么是 Electron,由来、适用场景 和 Electron 的环境搭建(1/7)
  10. from home edition to professional on windows