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

简介: 本文介绍了用仓颉语言开发的一个简单猜数字游戏,综合运用了流程控制、标准输入、字符串操作和整型比较等知识。程序生成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

目录
相关文章
|
3月前
|
安全 开发工具 开发者
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
仓颉编程语言首个长期支持版本于2025年7月1日发布,定位为面向全场景应用开发的下一代语言。其特点包括多后端支持、简明语法、多范式编程、类型与内存安全、高效并发及丰富内置库。支持与C语言互操作,并提供元编程能力,助力UI开发。当前仅提供CJNative后端SDK,配套VS Code插件便于开发。安装包已规范命名,可在官网下载并按指导完成配置。
793 1
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
|
7月前
|
Serverless 人机交互 UED
鸿蒙特效教程01-哔哩哔哩点赞与一键三连效果实现教程
本教程面向HarmonyOS初学者,详细讲解如何实现类似哔哩哔哩APP中的点赞与一键三连效果。内容涵盖基础布局、状态切换、点击动画、长按手势识别、旋转缩放动画以及粒子爆炸效果的实现。通过ArkUI布局系统、状态管理、手势处理和动画技术,逐步完成从简单到复杂的交互设计。最终效果包括图标变色、缩放、旋转及粒子动画,为用户提供流畅生动的体验。适合希望掌握HarmonyOS开发技巧的开发者学习参考。
314 68
鸿蒙特效教程01-哔哩哔哩点赞与一键三连效果实现教程
|
8月前
|
人工智能 搜索推荐 数据挖掘
原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
原生鸿蒙版小艺APP成功接入DeepSeek-R1,为HarmonyOS用户带来更智能高效的交互体验。通过此次升级,用户在编程、学习和工作中的问题可迅速获得专业解答。同时,此举为HarmonyOS应用开发者提供了新的技术参考,激发了更多创新应用场景的开发,助力打造差异化竞争优势,推动HarmonyOS生态繁荣发展。
656 68
原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
|
7月前
|
人工智能 JavaScript 语音技术
HarmonyOS NEXT AI基础语音服务-语音输入
本案例展示了一个基于AI语音服务的实时语音转文字功能,通过麦克风采集音频并转换为文本。主要步骤包括:申请麦克风权限、初始化语音识别引擎、设置识别回调、配置音频参数及实现UI交互(长按按钮控制录音启停)。代码使用TypeScript编写,涵盖权限管理、引擎生命周期、异常处理等核心环节,确保功能稳定运行。适用于需要实时语音转写的场景,如会议记录、语音输入等。
HarmonyOS NEXT AI基础语音服务-语音输入
|
8月前
|
开发者 索引
HarmonyOS使用系统图标
HarmonyOS图标符号是系统内置的图标资源库,开发者可通过SymbolGlyph和SymbolSpan组件高效引用图标资源,简化开发流程并确保应用与系统设计风格一致。通过`$r(&#39;sys.symbol.resource_name&#39;)`访问系统图标资源,支持调整大小、颜色、粗细、渲染策略及动效。更多示例和学习资料详见官方文档和教程。
371 2
HarmonyOS使用系统图标
|
9月前
|
UED
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。
231 13
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
|
9月前
「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用
本篇教程将实现一个打卡提醒小应用,通过用户输入时间进行提醒设置,并展示实时提醒状态,实现提醒设置和取消等功能。
210 10
「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用
|
8月前
|
搜索推荐 新能源 数据处理
鸿蒙原生应用再添新丁!北京广电、充电管家、有我帮 入局鸿蒙
HarmonyOS 生态持续扩展,近期北京广电、充电管家、有我帮等多款应用上架,同花顺、爱奇艺等应用也进行了功能更新。北京广电借助鸿蒙的分布式能力,实现多设备协同,提升用户媒体消费体验;充电管家则优化了新能源汽车的充电服务,带来更便捷的智能化体验。这些应用的加入,标志着鸿蒙生态在传媒和生活服务领域的深度融合与快速发展,为用户带来全场景智慧生活的全新体验。
167 6
|
9月前
|
人工智能 安全 JavaScript
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS纯血鸿蒙新特性
HarmonyOS 3.1引入了Stage模型,增强ArkTS语言、应用程序框架、Web、ArkUI等子系统能力。新增功能包括Ability框架的Stage开发模型、ArkUI组件能力提升、应用包管理接口、公共基础类库支持Buffer读写、Web服务文档预览及编辑、图形图像编解码支持等。从API 9开始,Stage模型成为主要开发模型,支持更灵活的应用生命周期管理和窗口调度,提供更好的组件与窗口弱耦合体验。此外,HarmonyOS NEXT开发者预览版实现了全面自研,被称为“纯血鸿蒙”,具备自主可控、高度弹性、更强的安全性和隐私保护特性。
485 21
|
机器学习/深度学习 SQL 算法
如何在因果推断中更好地利用数据?
本报告从两个方面来介绍我们如何利用更多的数据来做好因果推断,一个是利用历史对照数据来显式缓解混淆偏差,另一个是多源数据融合下的因果推断。