教自己学Python(三)练手小游戏:不要猜中

不要猜中的小游戏

背景

和朋友闲待着两个人无聊,都想吃苹果又都不想洗,想起玩过的一个酒桌上猜数字的游戏,然后在手机上写了出来,三局两胜输了去洗苹果……

游戏介绍

零到99(包括边界),随机一个数两人(N人也可以)轮流猜测,如果没猜中,新的数将做为边界,一步步缩小可以猜测的范围,直到猜中为止,比如随机数是“32”,屏幕首先打印出:

当前范围是: 0 --- 100

第一次猜:50,屏幕返回

当前范围是: 0 --- 50

第二次猜:25,屏幕返回

当前范围是: 25 --- 50

第N次猜中:32,屏幕返回,并结束循环

^_^

准备工作

此前我们的代码都是在交互环境中完成的,是时候来点不一样的了。在学前班里我们介绍了一些文本编辑器,现在召唤一个你喜欢的,然后开始编写吧。

多行的Python代码稍微有些不同,下面的代码可以当做是一个参考。良好的代码编写应该是有缩进的,这样方面人类阅读和理解,Python解释器对缩进的要求是严格的,也就是说你必须进行缩进,缩进量通常为’2个空格或者4个空格’,注意不要用’Tab’和4个空格混用,因为不同编辑器可能会对’Tab’的缩进理解不同。

那么问题来了,什么时候需要缩进呢?大概像下图中的缩进一样:

缩进演示

缩进描述的是属于关系,每有一层属于关系就需要缩进一次。

写好了程序后,比如存为abc.py
在windows中进入相行目录,比如C盘下的py_ex,在Windows的命令行中输入:

C:\>python c:\py_ex\abc.py

或者

cd c:\py_ex\abc.py
C:\py_ex\>python abc.py

在Linux或OSX的终端中输入python + 文件路径,比如要运行家目录内py_ex中的abc.py文件:

$ python ~/py_ex/abc.py

代码(Python3)

下面的代码是Python3的,如果是Python2你还需要在import之前再加入一行# -*- coding: utf-8 -*-,来确保代码内的中文字符可以运行。

import random

rand_num = random.randint(0, 99)
left = 0
right = 99
while True:
    print('当前范围是:', left, '---', right)
    test = int(input('再猜一下\n'))
    if test == rand_num:
        print('^_^')
        break
    if test > rand_num:
        right = test
    else:
        left = test

代码注解

第一行我们先引入了一个可以产生随机数的包,这里我们需要的是整数所以使用random.randint()方法,这个方法接收两个参数做为左右边界,返回一个包含边界的随机整数。

第六行,一个永恒循环来接收N次猜数,如果猜中break跳出循环。

第八行的input是一个内建函数用来接收输入信息,默认接收到的输入会是str类型,我们对其进行了强制类型转换,这里不严谨,没有进行严格的输入验证。

如果有疑问

有疑问是正常的,因为像ifwhile这样的控制语句我们之前并没有提过,但是没关系,即使没有提到过,你也一样看得懂,不是吗? 这里看明白就好,后续的章节我们会详细介绍。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 开发窗口化小游戏,如猜数字,是一个很好的实践编程技能和理解事件驱动编程的方式。在 Python 中,你可以使用 `pygame` 库来创建这样的游戏,它提供了丰富的图形界面和游戏编程功能。 首先,你需要安装 `pygame`,可以通过 pip 来安装: ```bash pip install pygame ``` 接下来,我们可以简单地概述一下制作猜数字游戏的基本步骤: 1. **初始化 Pygame**: ```python import pygame pygame.init() ``` 2. **设置窗口**: ```python screen = pygame.display.set_mode((640, 480)) pygame.display.set_caption("Guess the Number") ``` 3. **生成随机数**: ```python secret_number = random.randint(1, 100) ``` 4. **主循环**: - 获取用户输入 - 检查输入并更新游戏状态 - 渲染游戏画面 - 更新屏幕 - 处理事件(如关闭窗口) 5. **猜数过程**: - 显示提示信息(比如“太低了”或“太高了”) - 当玩家猜中数字时,显示胜利消息并结束游戏 6. **退出游戏**: ```python if event.type == pygame.QUIT: pygame.quit() quit() ``` 下面是基础版本的猜数字游戏代码片段: ```python import pygame import random # ... (步骤2-5的代码) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 用户输入 guess = int(pygame.font.SysFont('Arial', 30).render(str(input_box.get_text()), True, (0, 0, 0))) input_box.updateguess(guess) # 检查猜测并更新游戏状态 if guess == secret_number: pygame.time.delay(1000) # 延迟1秒显示胜利消息 victory_message = "Congratulations! You guessed the number!" screen.blit(victory_message, (50, 200)) elif guess < secret_number: feedback = "Too low!" else: feedback = "Too high!" # 渲染反馈 screen.blit(feedback, (50, 150)) # 更新屏幕 pygame.display.flip() pygame.quit() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值