用Python 开发一个小游戏

写在前面

这个游戏没有华丽界面,也没有刺激的过渡动画。初始界面是这样的..

游戏截图

如果你是一个把 terminal 玩的飞起的极客,你一定会非常喜欢这种黑白搭配。很神秘是吧?今天我们的游戏设计就从这样的一个命令行界面开始。

游戏分析

游戏的玩法很简单,上面的截图一看大家可能就会联想到我们平时玩过的一个猜数字游戏。我们公司在晨会上这个游戏玩的概率就非常高,也是我非常喜欢的一个互动游戏。现在我们来分析下游戏的逻辑!

1、首先,系统需要在一个数字区间内随机选中一个数字作为神秘数。
2、假如用户第一次没猜中,系统需要根据用户没猜中的数字缩小数字区间。游戏继续,用户根据系统最新提供的数字区间继续猜。以此类推!
3、用户猜中,游戏结束!

关键点分析

随机数是如何产生的?

1
2
3
4
import random

# 获取一个随机整数
random_num = random.randint(0,100)

这里的 random_num 存储的值即是随机数。接下来我们会用到!

** 假如用户第一次没猜中,系统是如何自动缩小数字区间的呢?**

1
2
3
4
5
6
# 这里需要声明3个变量

key_status = 0 # 随机数是否被猜中
max = 100 # 默认数字区间的最大值
min = 0 # 默认数字区间的最小值

这样我们就可以在用户没猜中的情况下,使用用户猜测的数字和系统随机数进行比较。

  • 如果用户猜测的数字大于系统随机数。那么max = 用户猜测的数字,min = 0。紧接着把区间最大值赋值变量maxmax = 用户猜测的数字。
  • 如果用户猜测的数字小于系统随机数。那么max = 100,min = 用户猜测的数字。紧接着把区间最小值赋值给变量minmin = 用户猜测的数字。
  • 接下来循环判断这个逻辑,直到用户猜中系统随机数,游戏结束!

完整代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 获取一个随机整数
random_num = random.randint(0,100)
# 记录当前的时间
start_time = time.time();
key_status = 0
count = 0
max = 100
min = 0
print('请输入一个 0-100 的整数')
while (key_status == 0):
print('\n\n')
user_input = input('请输入:')
print('\n')
if (user_input.isdigit() and int(user_input) >= 0 and int(user_input) <= 100):

if (int(user_input) != random_num):
if (int(user_input) < random_num):
print('很遗憾,没猜对哦!给你个提示:' + str(user_input) + ' —— ' + str(max))
min = int(user_input)
else:
print('很遗憾,没猜对哦!给你个提示:' + str(min) + ' —— ' + str(user_input))
max = int(user_input)
print('————————————再试一次———————————————')
key_status = 0
count = count + 1
else:
print('————————————————————————————————————————猜对啦!———————————————————————————————————————————————————————\n\n')

print('!!!恭喜你猜中了!!!快去买彩票吧!\n\n')

print('————————————————————————————————————————猜对啦!———————————————————————————————————————————————————————\n\n')
end_time = time.time()
print('游戏总共耗时:',int(end_time - start_time),'秒')
if int(end_time - start_time) < 8:
print('游戏总共有效尝试次数:',count + 1,' 次,','击败了全国 95% 的选手')
elif int(end_time - start_time) >8 and int(end_time - start_time) < 15:
print('游戏总共有效尝试次数:',count + 1,' 次,','击败了全国 85% 的选手')
else:
print('游戏总共有效尝试次数:',count + 1,' 次,','击败了全国 60% 的选手')

key_status = 1
print('\n\n游戏结束!')
else:
print('输入的数据不合法!请输入一个 0 —— 100 的整数')

动画演示

演示