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

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

目录
相关文章
|
9月前
|
安全 开发工具 开发者
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
仓颉编程语言首个长期支持版本于2025年7月1日发布,定位为面向全场景应用开发的下一代语言。其特点包括多后端支持、简明语法、多范式编程、类型与内存安全、高效并发及丰富内置库。支持与C语言互操作,并提供元编程能力,助力UI开发。当前仅提供CJNative后端SDK,配套VS Code插件便于开发。安装包已规范命名,可在官网下载并按指导完成配置。
1718 1
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
|
JavaScript
详细介绍 TypeScript 中常用的循环语句,包括它们的语法、用法以及一些注意事项
详细介绍 TypeScript 中常用的循环语句,包括它们的语法、用法以及一些注意事项
495 1
|
人工智能 JavaScript API
【HarmonyOS NEXT+AI】问答03:找不到DevEco Studio Cangjie Plugin下载链接?
本文针对学员在“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”课程中提出的问题进行解答:为何无法在华为开发者社区官网找到DevEco Studio Cangjie Plugin下载链接。文中详细介绍了Cangjie Plugin的功能及获取方式,包括STS和Canary版本的申请流程,并提供了学习仓颉编程语言的资源与建议。对于普通开发者,STS版本是当前首选;同时,通过课程与官方教程,可快速掌握仓颉语言核心语法及API,助力开发HarmonyOS NEXT AI智能助手应用。
696 3
【HarmonyOS NEXT+AI】问答03:找不到DevEco Studio Cangjie Plugin下载链接?
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
805 3
|
10月前
|
开发工具 开发者
HarmonyOS NEXT实战:播放视频
本教程介绍如何在HarmonyOS SDK中使用Video组件实现视频播放、暂停、结束、重置及跳转播放等功能,适用于教育类应用开发,提升视频交互体验。
409 1
|
存储 Oracle Java
深入探索安卓应用开发:从环境搭建到第一个"Hello, World!"
本文旨在为安卓开发初学者提供一个清晰、简洁的入门指南。我们将一步步引导您完成安卓开发环境的搭建,并详细介绍如何创建您的第一个安卓应用程序。通过这篇文章,您不仅能够理解安卓应用开发的基本流程,还能掌握一些实用的技巧和方法,为进一步深入学习打下坚实的基础。
|
分布式计算 资源调度 Hadoop
Hadoop网络带宽限制
【7月更文挑战第13天】
383 14
|
机器学习/深度学习 存储 人工智能
《DeepSeek情感分析技术:突破与创新,精准判断情感倾向》
在数字化时代,文本数据激增,情感分析成为关键需求。DeepSeek作为AI领域的佼佼者,基于Transformer架构实现深度语义理解,通过多模态融合技术全面感知情感,结合领域自适应与迁移学习跨越不同场景,采用对抗训练提升鲁棒性,并融合情感词典与知识图谱增强理解。这些创新使DeepSeek能精准判断情感倾向,为企业和研究提供有力支持。
1562 20
|
数据安全/隐私保护
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
本文详细总结了思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细),看这一篇就够啦~
51120 6
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
|
编译器 vr&ar 图形学
从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目
这是一篇Unity3D结合Vuforia实现增强现实(AR)项目的入门教程,涵盖了环境配置、Vuforia账户注册、Target数据集创建、Unity项目设置、AR程序配置、Android环境配置以及最终在手机上测试运行的全过程。
从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目

热门文章

最新文章

下一篇
开通oss服务