残尘风笑 发表于 2020-5-3 20:30:47

小甲鱼老师布置的课后作业(看到类 对象那里)

用easygui将以前的课后写的【注册登录】和【猜数字】小游戏结合起来,注册后登录进入系统就能玩这个猜数字小游戏。

(其实可以加更多小游戏进去,比如【乌龟吃鱼场景模拟】,但是现在学艺不精,改起来很慢还累,等以后学的方法思维多了再重新加。。。)
(其实就是懒。。。{:5_109:} )
import sys
import easygui as g
import random as r

class Dengluqi:
   
    dict1 = {'a':'请输入用户名:','b':'请输入密码:','c':'注册成功,赶紧登录试试吧!','d':'请点击指令代码:'}
    dict2 = {}

    def zhuce(self):
      
      msg_zhuce_name='欢迎注册!\n请认真填写信息哦!'
      title_zhuce = '注册'
      shuru_name = ['用户名']
      shuru_MM = ['密码']
      ss = shuru_name+shuru_MM
      name = g.multenterbox(msg_zhuce_name,title_zhuce,ss)
      while 1 :
            if name == None:
                return self.caidan()
            panduan ='欢迎注册!\n请认真填写信息哦!\n'
            for i in range(2) :
                if name == '' :
                  panduan += ('还没有输入%s.\n'% ss)
            if panduan =='欢迎注册!\n请认真填写信息哦!\n':
                break
            name = g.multenterbox(panduan,title_zhuce,ss,name)
      if name not in self.dict2 :
            self.dict2] = name
            if g.ccbox(self.dict1['c'],title_zhuce,('登录','返回菜单')) :
                return self.denglu()
            else :
                return self.caidan()
      else :
            if g.ccbox('该用户名已被使用,换一个吧~','提示',('好吧','不了,返回菜单')):
                return self.zhuce()
            else :
                return self.caidan()



    def denglu(self):
   
      count = 3
      msg_denglu_name='欢迎使用登录程序\n'
      title_denglu = '登录'
      denglu_name = ['用户名']
      denglu_MM = ['密码']
      ss = denglu_name+denglu_MM
      denglu_shuru =g.multpasswordbox(msg_denglu_name,title_denglu,ss)
      while 1 :
            if denglu_shuru == None :
                return self.caidan()
            panduan = '欢迎使用登录程序\n'
            for i in range(2) :
                if denglu_shuru == '' :
                  panduan += ('还没有输入%s.\n'% ss)
            if panduan == '欢迎使用登录程序\n':
                break
            denglu_shuru = g.multpasswordbox(panduan,title_denglu,ss,denglu_shuru)
      if denglu_shuru not in self.dict2 :
            msg_denglu_nonname = '该用户还没有注册,是否去注册?'
            if g.ccbox(msg_denglu_nonname,'提示',('注册','返回菜单')) :
                return self.zhuce()
            else :
                return self.caidan()
      else :
            while 1 :
                if denglu_shuru == None :
                  return self.caidan()
   
                if denglu_shuru != self.dict2] :

                        msg_denglu_errorMM = ('密码输入错误!\n你还有 %d 次机会!' % count )
                        count -= 1
                        
                        if count < 0:
                            g.msgbox('密码输入错误次数过多,程序即将退出!','警告')
                            sys.exit(0)
                        if g.ccbox(msg_denglu_errorMM,'警告',('再试试','返回菜单')):
                            denglu_shuru = g.multpasswordbox(panduan,title_denglu,ss,denglu_shuru)
                            continue
                        else :
                            return self.caidan()
                else :
                  if g.ccbox('登录成功,祝您使用愉快~','登录成功',('进入系统','返回菜单')):
                        return caishuzi.caidan()#系统还没写,先用返回菜单代替。。。
                  else :
                        return self.caidan()


    def caidan(self):
      
      msg_caidan1 = self.dict1['d']
      title_caidan = '选择指令'
      choices_caidan =['———注册程序———','———登录程序———','———退出程序———']
      caidan_choice = g.choicebox(msg_caidan1 , title_caidan ,choices_caidan)
      if g.ccbox('确认吗?','提示',('确认','不了')):
            if str(caidan_choice) == '———注册程序———':
                return self.zhuce()
            elif str(caidan_choice) == '———登录程序———':
                return self.denglu()
            elif str(caidan_choice) == '———退出程序———':
                sys.exit(0)
      else :
            return self.caidan()

class Caishuzi:
   
    #——————————————————————————————————————————————
    #——————————————————————————————————————————————
    def caidan(self) :
      cishu_fanwei = []
      msg_caidan1 = '请选择小游戏难度~'
      title_caidan = '难度选择'
      choices_caidan = ['低级(随机1~10之间的整数,3次错误机会)','中级(随机1~100之间的整数,5次错误机会)','高级(随机1~1000之间的整数,9次错误机会)','退出登录']
      caidan_choice = g.buttonbox(msg_caidan1, title_caidan,choices_caidan)
      if caidan_choice == '低级(随机1~10之间的整数,3次错误机会)':
            cishu_fanwei.append(3)
            cishu_fanwei.append(10)
            return self.caicaikan(cishu_fanwei)
      if caidan_choice == '中级(随机1~100之间的整数,5次错误机会)':
            cishu_fanwei.append(5)
            cishu_fanwei.append(100)
            return self.caicaikan(cishu_fanwei)
      if caidan_choice == '高级(随机1~1000之间的整数,9次错误机会)':
            cishu_fanwei.append(9)
            cishu_fanwei.append(1000)
            return self.caicaikan(cishu_fanwei)
      if caidan_choice == '退出登录':
            return dengluqi.caidan()
    #——————————————————————————————————————————————
    #——————————————————————————————————————————————
    def caicaikan(self,cishu_fanwei):

      dict1 ={
            'msg1 ': '要玩玩猜数字小游戏吗?',
            'title1' : '提示',
            'choice1' : ['好呀','不了不了'],
            'choice2' : ['继续','返回菜单','退出游戏'],
            'choice3' : ['是的','再玩玩儿~'],
            'choice4' : ['是的','继续游戏','返回菜单'],
            'msg_over' : '确定要结束小游戏吗?',
            'msg_right' : '太棒了!你猜对了!\n要继续玩吗?',
            'msg_none' : '你还没有输入呢\n',
            'msg_tishi1' : '小了小了~\n',
            'msg_tishi2' : '大了大了~\n',
            'msg_tishi0' : ''}
      
      count = cishu_fanwei
      fanwei_r = cishu_fanwei
      msg_0 = '请输入一个1~%d之间的整数猜猜看吧~' % cishu_fanwei
      msg2 = msg_0
      msg_tishi = dict1['msg_tishi0']
      msg_cishu = '你还有%d次机会\n' % cishu_fanwei
      msg_count = '你还有%d次机会\n' % count
      anwser = r.randint(1,cishu_fanwei)
      while 1 :
            anwser_in = anwser
            shuru = g.enterbox(msg_count + msg2 ,'猜猜看吧~')
            msg_tishi = dict1['msg_tishi0']
      #——————————————————————————————————————————————
            if shuru == None :      #输入界面点击cancel时
                xuanze1 = g.buttonbox(dict1['msg_over'],'提示',dict1['choice4'])
                if xuanze1 == dict1['choice4']:
                  sys.exit(0)
                if xuanze1 == dict1['choice4']:
                  pass
                if xuanze1 == dict1['choice4']:
                  return self.caidan()   
      #——————————————————————————————————————————————
            elif shuru != '':      #输入不为空
                if shuru.isnumeric() :#输入字符全部时数字字符
                  if int(shuru) == anwser_in :#输入的是正确数字
                        xuanze2 = g.buttonbox(dict1['msg_right'],'提示',dict1['choice2'])
                        count = cishu_fanwei
                        msg_count=msg_cishu
                        if xuanze2 == dict1['choice2']:
                            anwser = r.randint(1,cishu_fanwei)
                            continue    #再来一次
                        if xuanze2 == dict1['choice2']:
                            return self.caidan()
                        if xuanze2 == dict1['choice2']:
                            sys.exit(0)
      #——————————————————————————————————————————————
                  if count == 0 :#机会用尽
                        count = cishu_fanwei
                        msg_count=msg_cishu
                        xuanze3 = g.buttonbox('次数用光光了T_T~\n正确数字是:%d\n是否重新开始小游戏?' % anwser_in,'提示',dict1['choice2'])
                        if xuanze3 == dict1['choice2']:
                            anwser = r.randint(1,cishu_fanwei)
                            continue    #再来一次
                        if xuanze3 == dict1['choice2']:
                            return self.caidan()
                        if xuanze3 == dict1['choice2']:
                            sys.exit(0)
      #——————————————————————————————————————————————   
                  if int(shuru) > anwser_in : #输入的数字比正确数字大
                        msg2 = dict1['msg_tishi2']
                        count -= 1
                        msg_count = '你还有%d次机会\n' % count                  
                  if int(shuru) < anwser_in : # 输入的数字比正确数字小
                        msg2 = dict1['msg_tishi1']
                        count -= 1
                        msg_count = '你还有%d次机会\n' % count                  
                  if count == 0:    #最后一次机会
                        msg_count='你只有最后一次机会了!\n'
      #——————————————————————————————————————————————
                else : # 输入的有除数字外其它类型字符
                  msg2 = msg_0 + '\n请不要输入除整数外的其他东西!'
                  continue
      #——————————————————————————————————————————————
            else :    # 输入为空(没有输入)
                msg2 = dict1['msg_none'] + msg_0
                continue
    #——————————————————————————————————————————————
    #——————————————————————————————————————————————

dengluqi = Dengluqi()
caishuzi = Caishuzi()

ifg.ccbox('要进入程序吗?','提示',['进入','不了']) :
    dengluqi.caidan()
else :
    sys.exit(0)

老八秘制 发表于 2020-5-3 20:40:19

前排
页: [1]
查看完整版本: 小甲鱼老师布置的课后作业(看到类 对象那里)