4.4 KiB
4.4 KiB
第 3 课:听玩家的话(键盘输入)
本课目标:学会用 std::cin 从键盘读入数字,存进已经学过的 int 变量 里。这样游戏可以问「你想抽几次?」「你有多少金币?」而不是写死在代码里。
复习:第 1 课 cout 输出;第 2 课 int 变量。本课把 玩家输入 和 变量 连起来。
1. 这一课要搞懂什么
std::cout <<:程序 往外说(屏幕上看得到)。std::cin >>:程序 往里收(你在键盘上打字,程序读进来)。>>像一个小漏斗:右边的变量名表示「读到的数放进哪个盒子」。
顺序很重要:一般先 cout 写一句提示,再 cin 读入,玩家才知道该输入什么。
2. 第一个会「听人话」的程序
保存为 lesson3.cpp(或你喜欢的名字,扩展名 .cpp):
#include <iostream>
int main() {
int pulls = 0;
std::cout << "你想抽几次?";
std::cin >> pulls;
std::cout << "好,我们准备抽 " << pulls << " 次\n";
return 0;
}
每一部分在说什么
| 代码 | 意思(小朋友版) |
|---|---|
int pulls = 0; |
先准备一个整数盒子,里面暂时当 0(读入后会被覆盖)。 |
std::cout << "你想抽几次?"; |
屏幕上显示问题,不换行也可以,光标停在同一行等输入。 |
std::cin >> pulls; |
等你按回车,把输入的 整数 放进 pulls。 |
下一行 cout |
把盒子里的数说出来,确认程序真的记住了。 |
编译运行后,输入一个整数(例如 5),回车,应看到:好,我们准备抽 5 次
3. 提示语要清楚
玩家不知道要输入什么时会发呆,所以:
- 问题用
cout写清楚。 - 可以在提示里写「请输入整数」或「输入数字后按回车」。
std::cout << "请输入你想抽的次数(整数),然后按回车:";
std::cin >> pulls;
4. 一次读两个数(进阶)
抽卡可以既要「次数」又要「金币」,可以连着写两次 cin:
#include <iostream>
int main() {
int pulls = 0;
int coins = 0;
std::cout << "抽几次?";
std::cin >> pulls;
std::cout << "现在有多少金币?";
std::cin >> coins;
std::cout << "收到:抽 " << pulls << " 次,金币 " << coins << "\n";
return 0;
}
运行时要 输入两次:第一次回车后,再问第二个数。
5. 和抽卡游戏的关系
| 想法 | 做法 |
|---|---|
| 玩家决定抽几次 | cin >> pulls |
| 玩家报金币数量 | cin >> coins |
| 以后扣金币、减次数 | 用第 2 课的变量和赋值、pulls - 1 等 |
本课只保证:能读进来、能显示出来。随机抽结果在第 4 课。
6. 怎么编译和运行
clang++ -std=c++17 -o lesson3 lesson3.cpp
./lesson3
输入数字后一定要按 回车,程序才会继续。
7. 本课课堂小练习
- 只用一个程序:先
cout问「你叫什么名字?」——名字是 文字,本课先不学string,可以改成问「你的幸运数字是几?」用int lucky+cin读入并打印。 - 做「抽几次 + 金币」两段提问(用上文第 4 节的结构),最后输出一句自己编的话,里面必须用到
pulls和coins。
8. 本课课后作业(选做)
- 故意在问「整数」时输入 字母 或 符号,看程序会怎样(可能卡住或出错,先观察,以后会学更稳妥的写法)。
- 问家长:
cin >> pulls后面的>>和cout里的<<方向为什么相反?(一个往里收,一个往外送,像箭头方向。)
9. 常见小问题
- 输入完没反应:检查是否按了回车;是否在等待第二个数(读两次就要输入两次)。
- 想输入中文名字:要用
std::string,下几课会用到时再扩展;本课整数输入用数字即可。 - 一次想输入多个数:可以在一行里用空格隔开两个整数,例如
3 50,然后std::cin >> pulls >> coins;(试一试当拓展)。
10. 下一课预告
第 4 课会学 随机数:每次抽卡结果不一样——rand、srand 和「种子」,为真正的 抽卡运气 做准备。
学完请家长在 学习进度与状态.md 里更新第 3 课的状态与作业完成情况。
下一课文档:第04课-运气来了.md