先介绍下游戏规则:

系统随机生成一个四位数字符串,每一位都由数字(0~9)组成,如 0123 5678 4679等(数字不会重复)
玩家有5次机会,每次输入长度为4的数字,系统给出匹配信息
如:
系统生成的字符串为 1234
(A代表这一位数猜对了,B代表这一位没猜对,但这个数字存在于答案中,X代表这个数字不存在于答案中)
玩家输入 1389 则匹配信息为 ABXX
玩家输入 1436 则匹配信息为 ABAX
玩家输入 1432 则匹配信息为 ABAB
玩家输入 1234 则匹配信息为 AAAA 则此时游戏成功
如果当输入次数达到指定的次数上限(可自行配置,一般取10次)后仍然匹配失败,则游戏失败,并打印出答案

这个小游戏其实是我的老朋友了,我在学习比如c,c++,java,汇编这些编程语言的时候,都曾拿这个小游戏来作为练手的小项目。

下面来看看这个小游戏的python版本:

import random

R_NUM = ''
TIMES = 10

#生成由4位不重复的随机数字组成的字符串
def init_random_num():
    global R_NUM
    num = ''
    for i in range(4):
        word = str(random.randint(0, 9))
        #避免数字重复
        while word in num:
            word = str(random.randint(0, 9))
        num = num + word
    R_NUM = num
    print('\n')
    print('System already init the answer,Game start!', num)


#控制用户输入,只接受由4位数字组成的字符串
def input_num():
    flag = True
    while (flag):
        num = input("input a num (like 1234):")
        if (len(num) == 4):
            try:
                int(num)
            except:
                #输入的字符串长度为4并且全部由数字组成,退出循环
                flag = True
            else:
                flag = False
    return num

#判断用户输入的字符串和答案的匹配情况
def judge(input_num):
    global R_NUM
    judge_result = 'XXXX'
    for i in range(4):
        # 数字相同
        if R_NUM[i] == input_num[i]:
            judge_result = set_char(judge_result, i, 'A')
        #数字不同
        elif (R_NUM[i] != input_num[i]):
            # 数字存在
            if input_num[i] in R_NUM:
                judge_result = set_char(judge_result, i, 'B')
            # 数字不存在
            else:
                judge_result = set_char(judge_result, i, 'X')
    return judge_result

#设置匹配字母 A|B|X
def set_char(str, index, ch):
    return str[:index] + ch + str[index + 1:]

#游戏主流程
def play_game():
    init_random_num()
    print('You have ', TIMES, ' chances to guess the answer, enjoy the game!')
    print('\n')
    for i in range(TIMES):
        user_input = input_num()
        jud = judge(user_input)
        #没猜中
        if jud != 'AAAA':
            print('Your answer is wrong: ', jud, ' left times: ',
                  (TIMES - (i + 1)))
            continue
        #猜中了
        else:
            print('\n')
            print('Yes! you get the right answer! answer is:', R_NUM,
                  'used times:', i + 1)
            break
    else:
        print('Sorry you used all chances, the right answer is :', R_NUM)

#控制游戏开始与结束
def play():
    global R_NUM, TIMES
    flag = True
    while (flag):
        print('\n**********************************************')
        if input("Want to play game?(y/n)") == 'y':
            play_game()
        else:
            print('good bye~')
            flag = False

if __name__ == '__main__':
    play()

游戏画面如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注