《跟老卫学仓颉编程语言开发》实战:猜数字游戏

简介: 本文介绍了用仓颉语言开发的一个简单猜数字游戏,综合运用了流程控制、标准输入、字符串操作和整型比较等知识。程序生成1到100之间的随机整数,用户通过标准输入猜数字,程序提示“太大”或“太小”,直至猜中并显示祝贺信息。代码使用`std.console`包处理输入,`std.convert`包实现字符串转整型,通过`if-else`判断大小,`while`循环支持多次输入。示例源于《跟老卫学仓颉编程语言开发》,源码可在其GitHub仓库获取。

以前中央电视台财经频道推出过一档大型演播室互动娱乐节目《购物街》,该节目里面包含了一个叫做“高了低了”的游戏环节。笔者非常喜爱这个游戏。这个游戏环节设置了八个百元价位左右的商品,首先选手要选择编号1-8的商品,之后猜这个商品的价格。在选手猜价格的过程中,主持人会给出高了、低了的提示,直到帮助选手猜出正确价格为止。之后继续选择,以此类推,直到30秒时间到为止。

本节所要介绍的猜数字游戏也是类似的,程序给出一个1到100之间的随机整数,让用户猜。用户猜一个数并输入到程序,然后程序会提示猜测是大了还是小了。如果猜对了,它会打印祝贺信息并退出。

本节通过仓颉语言,来开发一个简单的猜数字游戏,综合运用了流程控制、标准输入、字符串的操作、整型的比较等知识。

本节示例可以在“guessing_game”应用下找到。

输入数字

在程序界面输入数字代表用户猜数字的实现。如何实现在程序界面输入数字?这里就需要用到std.console包,该模块包含许多在执行输入和输出时需要的常见操作。

import std.console.*

// 标准输入流(stdIn)读取一行
let line = Console.stdIn.readln()
var lineStr = line.getOrThrow();

上述代码实现了通过标准输入(stdIn)读取一行文本的功能。当然,还需要将读入的本文,转为整型数字,代码如下:

import std.convert.*

// 字符串转为整型
let guess: Int64 = Int64.parse(lineStr);

println("You guessed: ${guess}");

convert包提供从字符串转到特定类型的Convert系列函数。上述例子中,Int64.parse()接口用于实现将Int64类型字面量的字符串转换为Int64值的相关操作函数。

比较大小

比较大小的流程控制,可以采用前面章节所学习的if-else语句,代码如下:

// 被猜的数字
let secret_number = 41;

// 比大小
if (guess == secret_number) {
   
    println("You win!");
    break;
} else if (guess < secret_number) {
   
    println("Too small!");
} else {
   
    println("Too big!");
}

上述代码,比较输入的数字guess与被猜的数字secret_number比较大小。

  • 如果guess小于secret_number,则提示输入的数字太小了;
  • 如果guess大于secret_number,则提示输入的数字太大了;
  • 如果guess等于secret_number,则说明猜中,退出程序。

循环输入

如果没有猜中,程序应该支持循环输入。这里,我们用到了while循环。完整程序代码如下:

/// 猜数字游戏
import std.console.*
import std.convert.*

main() {
   
    println("Guess the number! 1-100");

    // 被猜的数字
    let secret_number = 41;

    while (true) {
   
        println("Please input your guess.");

        // 标准输入流(stdin)读取一行
        let line = Console.stdIn.readln()
        var lineStr = line.getOrThrow();

        // 字符串转为整型
        let guess: Int64 = Int64.parse(lineStr);

        println("You guessed: ${guess}");

        // 比大小
        if (guess == secret_number) {
   
            println("You win!");
            break;
        } else if (guess < secret_number) {
   
            println("Too small!");
        } else {
   
            println("Too big!");
        }
    }
}

运行效果

运行程序,输入数字进行猜测,运行效果如下:

Guess the number! 1-100
Please input your guess.
3
You guessed: 3
Too small!
Please input your guess.
50
You guessed: 50
Too big!
Please input your guess.
45
You guessed: 45
Too big!
Please input your guess.
35
You guessed: 35
Too small!
Please input your guess.
40
You guessed: 40
Too small!
Please input your guess.
42
You guessed: 42
Too big!
Please input your guess.
41
You guessed: 41
You win!

参考引用

免费开源书《跟老卫学仓颉编程语言开发》,源码见:https://github.com/waylau/cangjie-programming-language-tutorial

目录
相关文章
Arkts http数据请求
Arkts http数据请求
1112 0
|
存储 监控 网络安全
云服务器网速很差的原因有哪些方面
云服务器网速很差的原因有哪些方面
|
安全 Java 应用服务中间件
组件漏洞修复---修改SpringBoot内置tomcat的版本号
安全反应Tomcat9.0.41存在安全漏洞,让将所有服务的Tomcat版本升级到9.0.44,我们都知道SpingBoot中是集成的有内置的Tomcat的,叫Embed-Tomcat,这个Tomcat和我们用于部署war包的Tomcat还是有有一些区别的,但是版本一直和Tomcat基本保持一致。
3996 0
组件漏洞修复---修改SpringBoot内置tomcat的版本号
|
移动开发 开发者
仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑
仓颉开发语言即将发布一周年,虽已有知名App应用,但教程稀缺且官网文档不够完善。幽蓝君推出系列教程,从零开始系统讲解移动开发。本期介绍常用UI组件:按钮、文本、图片、输入框与搜索框的使用方法及注意事项,帮助开发者快速上手仓颉语言。
|
9月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
58671 11
|
数据安全/隐私保护
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
本文详细总结了思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细),看这一篇就够啦~
58775 7
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
|
人工智能 安全 API
HarmonyOS5云服务技术分享--登录邮件功能整理
本文详细解析了HarmonyOS认证服务中基于ArkTS API 12的邮箱登录全流程,涵盖注册、密码登录、验证码登录、敏感操作处理及密码重置等功能。通过清晰的代码示例与注意事项说明,帮助开发者快速实现安全可靠的邮箱认证流程,同时提供账号关联、风控策略等扩展建议,助力优化用户体验。适合初学者与进阶开发者参考实践。
|
运维 自然语言处理 Ubuntu
解锁高效运维新姿势!操作系统智能助手OS Copilot新功能实战测评
阿里云OS Copilot经过多轮迭代,现已支持多端操作系统(包括Ubuntu、CentOS、Anolis OS等)及aarch64架构,极大扩展了其适用范围。新特性包括阿里云CLI调用、系统运维及调优工具的直接调用、Agent模式实装以及复杂任务处理能力。这些更新显著提升了用户体验和效率,特别是在处理紧急情况时,OS Copilot能快速查找并执行命令,节省大量时间和精力。此外,通过自然语言交互,用户可以轻松完成如系统健康检查、文件操作及日志分析等任务。总之,OS Copilot已从内测时的辅助工具进化为合格的贴身管家,极大地简化了日常运维工作。
|
存储 小程序 C语言
【C语言程序设计——文件】文件操作(头歌实践教学平台习题)【合集】
本文介绍了C语言中的文件操作,分为两个关卡。第1关任务是将键盘输入的字符(以#结束)存入`file1.txt`并显示输出;第2关任务是从键盘输入若干行文本(每行不超过80个字符,用-1作为结束标志),写入`file2.txt`后再读取并显示。文中详细讲解了文件的打开、读取(使用`fgetc()`和`fgets()`)、写入(使用`fputc()`和`fputs()`)及关闭操作,并提供了示例代码和测试说明。
578 5
|
Java 物联网 程序员
还在纠结抽象类和接口?看这篇就够了!
本文从一位程序员的角度出发,讲述了其小学弟在Java开发面试中遇到的难题——抽象类与接口的区别。文章不仅详细解析了两者的定义、特点及主要差异,还提供了实际开发中的应用场景和面试答题技巧,帮助读者更好地理解和应用这一重要知识点。
1933 12