Esempio n. 1
0
 def got_shot(self,user,arg1):
     # print("I got shot...")
     # 8受到攻击,减血的方法,参数user的实参是用户名:哪个用户受到了攻击;参数arg1的实参是武器:挨打者是受到了哪种武器的打击
     q_data_life = select("life","ddd") #1读用户生命表
     q_data_weapons = select("weapons","ddd") #1读用户武器表
     # print(q_data_life)
     # print(q_data_weapons)
     life_value = q_data_life[user]["life_value"]  #用户的生命值
     # print(q_data_life[user]["life_value"])
     # print(q_data_weapons[user]["1"]["goods"])  #用户的武器
     if life_value>0:
         # life_value -=10  #这里有个坑,如果是life_value-=10就会出现生命值不变的情况,需要用q_data_life[user]["life_value"] -=10才行
         if random.randrange(1,4) == random.randrange(1,3):
             print("\033[32;1m哈哈,没有命中,对方没有掉血\033[0m")
         else:
             if q_data_life[user]["bodyarmor"] == "False": #and q_data_weapons[user]["1"]["goods"]=="Ak47":  #没有防弹衣每次中枪,伤害是10
                 if arg1 == q_data_weapons[user]["1"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["1"]["hurt"])  #2修改用户生命值
                     # print(q_data_life[user]["life_value"])
                     # print(int(q_data_weapons[user]["1"]["hurt"]))
                     print("\033[32;1m对方无防弹衣,被[%s]击中,掉血,生命值减10点\033[0m" % q_data_weapons[user]["1"]["goods"] )
                 elif arg1 == q_data_weapons[user]["2"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["2"]["hurt"])  #2修改用户生命值
                     print("\033[32;1m对方无防弹衣,被[%s]击中,掉血,生命值减20点\033[0m"% q_data_weapons[user]["2"]["goods"])
                 elif arg1 == q_data_weapons[user]["3"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["3"]["hurt"])  #2修改用户生命值
                     print("\033[32;1m对方无防弹衣,被[%s]击中,掉血,生命值减30点\033[0m"% q_data_weapons[user]["3"]["goods"])
                 elif arg1 == q_data_weapons[user]["4"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["4"]["hurt"])  #2修改用户生命值
                     print("\033[32;1m对方无防弹衣,被[%s]击中,掉血,生命值减40点\033[0m"% q_data_weapons[user]["4"]["goods"])
                 else:
                     print("\033[31;1m程序中武器的单词和文件中武器的单次不一致,请检查\033[0m")
             if q_data_life[user]["bodyarmor"] == "True":  #有防弹衣,每次中枪,伤害是5
                 if arg1 == q_data_weapons[user]["1"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["1"]["hurt"])/2  #2修改用户生命值
                     print("\033[32;1m对方有防弹衣,被[%s]击中,损伤减半,掉血,生命值减5点\033[0m"% q_data_weapons[user]["1"]["goods"])
                 elif arg1 == q_data_weapons[user]["2"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["2"]["hurt"])/2  #2修改用户生命值
                     print("\033[32;1m对方有防弹衣,被[%s]击中,损伤减半,掉血,生命值减10点\033[0m"% q_data_weapons[user]["2"]["goods"])
                 elif arg1 == q_data_weapons[user]["3"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["3"]["hurt"])/2  #2修改用户生命值
                     print("\033[32;1m对方有防弹衣,被[%s]击中,损伤减半,掉血,生命值减15点\033[0m"% q_data_weapons[user]["3"]["goods"])
                 elif arg1 == q_data_weapons[user]["4"]["goods"]:
                     q_data_life[user]["life_value"] -=int(q_data_weapons[user]["4"]["hurt"])/2  #2修改用户生命值
                     print("\033[32;1m对方有防弹衣,被[%s]击中,损伤减半,掉血,生命值减20点\033[0m"% q_data_weapons[user]["4"]["goods"])
                 else:
                     print("\033[31;1m程序中武器的单词和文件中武器的单次不一致,请检查\033[0m")
     else:
         print("\033[31;1m对方的生命值小于等于0,挂了,游戏结束,是否退出游戏\033[0m")
     #3将修改后的用户生命值,写入文件
         #修改后的生命值写文件
     f = open("username1.txt","w") #新建一个新文件
     json.dump(q_data_life,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data_life转换后写入f)
     f.close()
Esempio n. 2
0
    def add_money(self,user):
        """
        :param user: 给哪个用户加金币
        :return:
        """
        q_data_money = select("life","money") #1读用户生命表
        money = q_data_money[user]["money"]  #用户的金币
        q_data_money[user]["money"] +=10  #每次调用加金币方法,增加10个金币
        print("\033[32;1m加金币,增加10个金币\033[0m")

          #3将修改后的用户金币值,写入文件
            #修改后的生命值写文件
        f = open("username1.txt","w") #新建一个新文件
        json.dump(q_data_money,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data_life转换后写入f)
        f.close()

        #6加金币后,新建一个历史记录表
            #构造字典,往字典添加键值对,写入到文件
        my_dic1 = {'name':user,'role':q_data_money[user]["role"],"ipaddr":ipaddr, 'money': 10,"type":"add_money","time":time.strftime('%Y-%m-%d %H:%M:%S')}
        # print(my_dic1)

        j_str = json.dumps(my_dic1)  #先把字典转换成字符串
        f = open("addmoney_his.txt","a")  #往原有的文件中追加加钱记录
        f.write(j_str)   #再写入到文件
        f.write("\n")   #添加换行符  这里手动添加换行
        # f.write(data) #直接写入字典,报错 TypeError: write() argument must be str, not dict
        f.close()

        p1.add_money_his(user) #调用增加金币历史记录方法,前台显示
Esempio n. 3
0
    def add_blood(self,user):
        q_data_life = select("life","ddd") #1读用户生命表
        life_value = q_data_life[user]["life_value"]  #用户的生命值
        q_data_life[user]["life_value"] +=10  #每次调用加血方法,回复10点生命值
        print("\033[32;1m加血,恢复10点生命值\033[0m")

          #3将修改后的用户生命值,写入文件
            #修改后的生命值写文件
        f = open("username1.txt","w") #新建一个新文件
        json.dump(q_data_life,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data_life转换后写入f)
        f.close()

        #6加血后,新建一个历史记录表
            #构造字典,往字典添加键值对,写入到文件
        my_dic1 = {'name':user,'role':q_data_life[user]["role"],"ipaddr":ipaddr, 'life_value': 10,"type":"add_blood","time":time.strftime('%Y-%m-%d %H:%M:%S')}
        # print(my_dic1)

        j_str = json.dumps(my_dic1)  #先把字典转换成字符串
        f = open("addblood_his.txt","a")  #往原有的文件中追加取款记录
        f.write(j_str)   #再写入到文件
        f.write("\n")   #添加换行符  这里手动添加换行
        # f.write(data) #直接写入字典,报错 TypeError: write() argument must be str, not dict
        f.close()

        p1.add_blood_his(user)  #调用加血历史记录方法,前台显示
Esempio n. 4
0
 def chushihua(arg1):  #arg1是形式参数  主模块mydic是实际参数传入(调用函数的时候,传入实参)
     #3对字典的键进行排序的方法
     arg1 = select("life","aaa")
     li_dickey=arg1.keys()   #将用户输入的字典的key添加到列表,无序的,无法通过索引号定位
     li_dickey = list(li_dickey)  #字典的key需要转换成list,才能排序
     li_dickey.sort()   #将列表排序后,通过索引号取出字典的key
     return li_dickey   #返回已经排序的列表
Esempio n. 5
0
    def add_user(self):
        break_flag =False
        while True:
            user_input = input("请输入需要添加的用户名:")
            # 1读出用户表到字典
            q_data_user = select("life","bbb")
            #2添加键值对到字典(用户名自定义输入,初始登录密码,初始余额,初始预算,初始错误登录次数,初始冻结状态,初始支付密码都给默认值)
            q_data_user[user_input] = {"bodyarmor": "True", "role": "police", "money": 15000, "weapon": "B22", "life_value": 100}
            print(q_data_user)
            #3将添加键值对后的字典,重新写入到文件json
            f = open("username1.txt","w") #新建一个新文件
        # f.seek(0)
            json.dump(q_data_user,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data_user转换后写入f)
            f.close()
            print("\033[32;1m用户添加成功,新用户是[%s],初始角色是[%s],初始生命值是[%s]点,初始金币是[%s]元,初始武器是[%s],初始防弹衣是[%s]\033[0m" % (user_input,q_data_user[user_input]["role"],q_data_user[user_input]["life_value"],q_data_user[user_input]["money"],q_data_user[user_input]["weapon"],q_data_user[user_input]["bodyarmor"]))
            # break
            p1.log1()

            while True:
                tuichu_adduser = input("确认退出添加用户程序么?输入c,退出回到主菜单;输入a,继续:")
                if tuichu_adduser == "a":
                    break  #跳出循环的当前迭代
                elif tuichu_adduser == "c":
                    break_flag = True  #外循环跳出标签
                    break
                else:  #如果输入的不是a或者c
                    print("\033[31;1m您输入的指令无效,请重新输入\033[0m")
                    continue  #跳出内循环本次迭代
            if break_flag:
                # return tuichu_adduser
                break  #跳出外循环
Esempio n. 6
0
    def view(self): #显示姓名、生命值等身份信息
        #1读出文件到字典
        q_data = select("life","aaa") #1读用户表
        # print(q_data)
        # #2打印字典的信息
        li_dickey=q_data.keys()   #将用户输入的字典的key添加到列表,无序的,无法通过索引号定位
        ret = list(li_dickey)  #字典的key需要转换成list,才能排序
        # print(ret)
        ret.sort()   #将列表排序后,通过索引号取出字典的key
        # print(ret)
         #单独采用‘%s’时,直接输出字符串,
#     # ‘%10s’表示在字符串前面添加占位符,并且字符串采用右对齐的方式,
#     # ‘%-10s’表示在字符串后面添加占位符(这10位占位符包含字符串),字符串采用左对齐的方式。
#     #   例如字符串本身是"abc"3位,那么‘%-10s’表示在字符串"abc"后添加7位占位符
        # # ret = chushihua(q_data[user]) #将字典的键放在列表中,给列表排序
        # print("身份信息如下:")
        # print("您目前的角色是:",q_data[ret[0]]["role"])
        print ('%-9s%-9s%-9s%-9s%-9s' % ("角色","姓名", "武器","生命值", "金币"))
        print ('%-11s%-11s%-11s%-11s%-11s' % (q_data[ret[0]]["role"],ret[0], q_data[ret[0]]["weapon"],q_data[ret[0]]["life_value"], q_data[ret[0]]["money"]))
        # print ('%-11s%-11s%-11s%-11s' % (ret[1], q_data[user][ret[1]]["weapon"],q_data[user][ret[1]]["life_value"], q_data[user][ret[1]]["money"]))
        print ('%-11s%-11s%-11s%-11s%-11s' % (q_data[ret[1]]["role"],ret[1], q_data[ret[1]]["weapon"],q_data[ret[1]]["life_value"], q_data[ret[1]]["money"]))
Esempio n. 7
0
def movie():
    print("Welcome to movie page")
    q_data = select('user', '123')
Esempio n. 8
0
def tv():
    print("Welcome to tv page")
    q_data = select('user', '123')
Esempio n. 9
0
def amount(name):
    func = sql_api.select(name)
    return func
Esempio n. 10
0
def home():
    print("Welcome to youtube.com")
    q_data = select("user", "eee")
    print("query res:", q_data)
Esempio n. 11
0
def home():
    res = select('user')
    print('welcome to my home page ...')
    print(res)
Esempio n. 12
0
def home():
    print("welcome to home page")
    q_data =select("user",'ddd')
    print("query res:", q_data)
Esempio n. 13
0
def home():
    res = select('user')
    print('welcome to my home page ...')
    print(res)
Esempio n. 14
0
    def buy_gun(self, user):
        # print("%s just bought %s" % (self.name,gun_name))
        total =0 #定义武器一共多少钱
        q_data = select("shop","ddd")  #1读武器表
        # print(q_data)  #{'1': {'price': 6099, 'goods': 'iphone6s', 'times': 0}, '2': {'price': 8888, 'goods': 'mac', 'times': 0}}
        q_data_yue = select("life","ddd") #2读用户生命值表
        # print(q_data_yue) #{'jack': {'yue': 15000, 'yusuan': 15000}}
        # num = q_data_yue[user]["yusuan"]   #定义购物预算(兜里一共多少钱) 预算可以直接定义,也可以从文件中读取
        num =150000
        yue = q_data_yue[user]["money"]  #用户的余额
        break_flag = False  #跳出外循环标识

        li_dickey=q_data[user].keys()   #将用户输入的字典的key添加到列表,无序的,无法通过索引号定位
        ret = list(li_dickey)  #字典的key需要转换成list,才能排序
        ret.sort()   #将列表排序后,通过索引号取出字典的key

        # ret = chushihua(q_data[user]) #将字典的键放在列表中,给列表排序
        q_data[user][ret[0]]["times"] = 0 #每次购买前,先将购买数量置为0
        q_data[user][ret[1]]["times"] = 0 #如果不将购买数量置为0,就是个累计效应

        #3修改购买数量和余额
        while True: #外循环,输入商品编号
            print("----欢迎购买武器,提高战斗力----")
            print("---武器编号列表---")
            print ('%-7s%-7s%-7s%-7s' % ("武器编号", "武器名称","武器价格", "购买数量"))
            print ('%-11s%-11s%-11s%-11s' % (ret[0], q_data[user][ret[0]]["goods"],q_data[user][ret[0]]["price"], q_data[user][ret[0]]["times"]))
            print ('%-11s%-11s%-11s%-11s' % (ret[1], q_data[user][ret[1]]["goods"],q_data[user][ret[1]]["price"], q_data[user][ret[1]]["times"]))
            # #打印商品编号列表
            print("您的余额目前是%s元" % q_data_yue[user]["money"])
            yue_before = q_data_yue[user]["money"]
            goods_no_input = input("请输入你要买的商品编号:") #要求用户输入商品编号
            if len(goods_no_input)==0: #如果商品编号为空
                print("\033[31;1m商品编号不能为空\033[0m")
            elif goods_no_input not in q_data[user]: #如果商品编号不存在
                print("\033[31;1m商品编号不存在\033[0m")
            else: #商品编号存在(调支付接口),下面的支付结算单独成一个函数,支付密码验证用装饰器
                # print(ret[0],total)
                if  total < num and yue>q_data[user][goods_no_input]["price"]: #bug修复,当商品总价格超过用户预算的时候,就不要再累加商品价格了,否则会出现98行,余额是负数的情况
                    total += q_data[user][goods_no_input]["price"]  #累加商品的价格(需要支付多少钱)
                # print(ret[1],total)
                # # 先计算商品总价格,在将商品这价格和预算比对
                if total < num and yue>q_data[user][goods_no_input]["price"]: #如果需要支付的钱小于用户的预算
                    q_data[user][goods_no_input]["times"] += 1  #购买数量+1
                    # print("3",q_data_yue["jack"]["yue"])
                    # q_data_yue["jack"]["yue"] -= total
                    q_data_yue[user]["money"] -= q_data[user][goods_no_input]["price"]    #关键点:原始的余额是10000文件中,每买一件商品,余额扣减商品的价格
                    #这里必须将total改成shop_dict[goods_no_input]["price"]  否则逻辑不对
                    # print("4",q_data_yue["jack"]["yue"])
                    # yue_list[-1] = num - total   #用户预算扣除购物车的花费后,计算用户的余额
                    # print("已经放入购物车,输入x,继续购物;输入y,去结算,请输入支付密码结算")
                    while True:
                        jiesuan = input("输入y,去结算;输入a,继续购买:")
                        if jiesuan == "y":
                            # login(user)  #调支付密码验证函数,这里需要将注册后输入的用户名作为参数传入
                            break  #跳出循环的当前迭代,回到75行
                        elif jiesuan == "a":
                            # break_flag = True  #外循环跳出标签
                            break
                        else:  #如果输入的不是x或者y
                            print("\033[31;1m您输入的指令无效,请重新输入\033[0m")
                            continue  #跳出内循环本次迭代

                    print("\033[32;1m目前没有超出预算,当前余额是%s元,可以继续购买,输入c,退出程序;输入a,继续购买:\033[0m:" % q_data_yue[user]["money"])
                    while True:
                        tuichu1 = input("确认退出程序么?输入c,退出程序;输入a,继续购买:")
                        if tuichu1 == "a":
                            break  #跳出循环的当前迭代,回到75行
                        elif tuichu1 == "c":
                            break_flag = True  #外循环跳出标签
                            break
                        else:  #如果输入的不是a或者c
                            print("\033[31;1m您输入的指令无效,请重新输入\033[0m")
                            continue  #跳出内循环本次迭代
                            # print total
                    if break_flag:
                        break  #跳出外循环
                if total >= num or yue<q_data[user][goods_no_input]["price"] : #如果需要支付的钱大于等于用户的预算,钱不够了,计算用户余额和用户买这个商品还差多少钱
                    cha_money = total - num #商品总价格-用户预算=用户差的钱
                    # yue_list[-1] = shop_dict[goods_no_input]["price"]-cha_money
                #如果left_money为负数,取绝对值(用户差的钱+用户的余额=商品的价格)
                    print("\033[31;1m钱不够了,当前余额是%s元,想要买这件商品,还差%s元\033[0m" % (q_data_yue[user]["money"],q_data[user][goods_no_input]["price"]-yue))

                    while True:#定义内循环,判断退出
                        tuichu = input("确认退出程序么?输入q,退出程序;输入b,返回上一级菜单;输入c,给用户充值:")
                        if tuichu == "q":  #
                            print("\033[32;1m退出程序,打印购物单如下:\033[0m")
                            break_flag = True  #外循环退出标识
                            break  #跳出循环
                        elif tuichu == "b":
                            total -= q_data[user][goods_no_input]["price"]
                            #bug修复,返回上一级的时候,最后一个商品由于预算不够,所以必须要扣减最后一个商品的价格
                            # print total
                            print("\033[32;1m返回上一级菜单,请重新输入你要买的商品编号:\033[0m")
                            break #跳出内循环本次迭代
                            # continue
                        elif tuichu == "c":
                            pass
                            # addblood_his.txt()
                        else:  #如果输入的不是q或者b
                            print("\033[31;1m您输入的指令无效,请重新输入\033[0m")
                            continue  #跳出内循环本次迭代
                    if break_flag:
                        break  #跳出外循环

        f = open("shop_gun.txt","w") #新建一个新文件
        # f.seek(0)  #回到文件最开始
        json.dump(q_data,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data转换后写入f)
        f.close()

        #5修改后的余额写文件
        f = open("username1.txt","w") #新建一个新文件
        # f.seek(0)
        json.dump(q_data_yue,f)   #将字典通过json.dump转换成字符串,并且同时写入到文件(将字典q_data_yue转换后写入f)
        f.close()

        #5打印买枪清单和余额(累计)
        print("---购物清单---")
        print ('%-7s%-7s%-7s%-7s%-7s' % ("武器编号", "武器名称","武器价格", "购买数量","购买用户"))
        print ('%-11s%-11s%-11s%-11s%-11s' % (ret[0], q_data[user][ret[0]]["goods"],q_data[user][ret[0]]["price"], q_data[user][ret[0]]["times"],user))
        print ('%-11s%-11s%-11s%-11s%-11s' % (ret[1], q_data[user][ret[1]]["goods"],q_data[user][ret[1]]["price"], q_data[user][ret[1]]["times"],user))
        print("您的余额目前是%s元" % q_data_yue[user]["money"])
        yue_after = q_data_yue[user]["money"]

        #6买枪结算后,新建一个历史记录表
            #构造字典,往字典添加键值对,写入到文件
        my_dic1 = {'name':user,"ipaddr":ipaddr, 'money': yue_before-yue_after,"type":"buy_gun","time":time.strftime('%Y-%m-%d %H:%M:%S')}
        # print(my_dic1)

        j_str = json.dumps(my_dic1)  #先把字典转换成字符串
        f = open("buygun_his.txt","a")  #往原有的文件中追加取款记录
        f.write(j_str)   #再写入到文件
        f.write("\n")   #添加换行符  这里手动添加换行
        # f.write(data) #直接写入字典,报错 TypeError: write() argument must be str, not dict
        f.close()

        #7打印单次购物记录-时间 地点 人物 事件(每次购物结算时花了多少)
        p1.buy_gun_his(user)  #调用购买武器历史记录方法,前台显示
Esempio n. 15
0
File: handle.py Progetto: lcppcl/S1
def home():
    print('welcome to home page')
    q_data = select('user', 'add')
    print(q_data)
Esempio n. 16
0
def home():
    print("Welcome to home page")
    q_data = select('user', '123')
Esempio n. 17
0
def homepage():
    print("welcome to home page")
    q_data = select("user","dd")
    print("query res:",q_data)
Esempio n. 18
0
def home():
    print('Welcome to home page')
    q_data = select('user', 'ddd')
    print('query res:', q_data)
Esempio n. 19
0
def home():
    print('This is home!')
    q_data = select('user','sss')
    print('res:',q_data)
Esempio n. 20
0
def home():
    print('welcome to home page')
    data = select("user", 'ddd')
    print('query res:', data)