本节课关卡

扣哒世界 · 游戏开发1 · C++ · 第18–21关

C++ · 本节课关卡

18 · 眼见为实

先读关卡目标,观察地图,再运用本课知识。

19 · 生存时间

先读关卡目标,观察地图,再运用本课知识。

20 · 持续付出

先读关卡目标,观察地图,再运用本课知识。

21 · 农夫与小矮人

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

📘 C++ 基础 Intro

CodeCombat C++ ⚡

Basic Syntax

👋 欢迎使用 C++!
本课 C++ 需要注意这些格式:

  • 📦 int main() { ... }
    所有主要代码都必须写在这个大括号里。
  • 🛑 ; (分号)
    每行代码结束必须加分号,不能忘!
  • ✨ auto
    用来自动推断变量类型,比如 auto player = ...
int main() { // 这是你的主程序 // 记得用分号结束每一行 auto hero = game.spawnXY("knight", 40, 40); hero.maxHealth = 100; return 0; }
💻
🎮 游戏开发1:眼见为实 第 18 关

用户界面 (UI) 🖥️

User Interface

👀 怎么让玩家看到分数?
我们需要使用 ui.track() 把藏在代码里的数字(比如击败数)展示在屏幕上。

👇 屏幕上会显示这个 👇
💀 Defeated: 5
⏳ Time: 12s
int main() { auto player = game.spawnPlayerXY("samurai", 20, 20); game.addSurviveGoal(20); auto spawner = game.spawnXY("generator", 50, 50); spawner.spawnType = "munchkin"; // UI 追踪显示 ui.track(game, "time"); ui.track(game, "defeated"); player.maxSpeed = 20; return 0; }
📊
🎮 游戏开发1:生存时间 第 19 关

生存目标 ⏱️

Survival Goal

🛡️ 活下去就是胜利!
在这一关,我们给玩家定了一个小目标:坚持20秒!
使用 game.addSurviveGoal(20); 来实现。

⚠️ 挑战模式:
敌人会源源不断涌来,保护好你的血条!
int main() { // 告诉游戏:玩家必须存活20秒 game.addSurviveGoal(20); // 使用 auto 定义生成器 auto generator = game.spawnXY("generator", 60, 40); generator.spawnType = "munchkin"; auto player = game.spawnPlayerXY("knight", 15, 15); player.maxHealth = 100; player.attackDamage = 10; return 0; }
⏳
🎮 游戏开发1:持续付出 第 20 关

数据库 💾

Database

📝 永远记住你!
数据库 (db) 就像一个永久的笔记本。
它可以记录你玩了多少次、总共赢了多少局。哪怕你关掉电脑明天再来,数据还在!

// 胜利时的回调函数 (定义在 main 之前) void onVictory(auto event) { db.add("wins", 1); db.add("total defeated", game.defeated); } int main() { auto player = game.spawnPlayerXY("raider", 36, 30); game.addSurviveGoal(8); // 写入数据库:游玩次数 + 1 db.add("plays", 1); // 显示数据库记录 ui.track(db, "plays"); ui.track(db, "wins"); // 监听胜利事件 game.on("victory", onVictory); return 0; }
🗄️
🎮 游戏开发1:农夫与小矮人 第 21 关

生态系统模拟 🦁

Ecosystem Simulation

🌍 上帝视角创造世界
我们要模拟一个真实的生态圈:
1. 食人魔 是捕食者 🐺
2. 农民 是猎物 🐑
3. 硬币 是食物 🌿
通过调整变量,观察生态平衡!

👹
食人魔
👊
👨‍🌾
农民
🤏
🪙
硬币
int main() { // --- 食人魔设定 (捕食者) --- game.startingOgres = 8; // 初始数量 game.ogreSpeed = 15; // 移动速度 game.ogreSplit = 3; // 繁殖需求 // --- 农民设定 (猎物) --- game.startingPeasants = 15; game.peasantSpeed = 6; // --- 硬币设定 --- game.coinSpawnTime = 1; game.coinSpawnAmount = 8; // 实时监控数据 ui.track(game, "humans"); ui.track(game, "ogres"); return 0; }
🌍

我的知识宝藏 · 一页复习

扣哒世界 · 游戏开发1 · C++ · 第18–21关

C++ · 知识点图
关键字方法 / 函数字符串数字

CodeCombat C++ ⚡

保留 main 框架;动作语句末尾写分号,字符串使用双引号。

auto hero = game.spawnXY("knight", 40, 40);

用户界面 (UI) 🖥️

👀 怎么让玩家看到分数? 我们需要使用 ui.track() 把藏在代码里的数字(比如击败数)展示在屏幕上。

ui.track(game, "time");

生存目标 ⏱️

🛡️ 活下去就是胜利! 在这一关,我们给玩家定了一个小目标:坚持20秒! 使用 game.addSurviveGoal(20); 来实现。

game.addSurviveGoal(20);

数据库 💾

db 保存需要跨局保留的数据;读取旧记录、更新数值,再保存新的记录。

db.add("wins", 1);

生态系统模拟 🦁

🌍 上帝视角创造世界 我们要模拟一个真实的生态圈。

game.startingPeasants = 15;

本节课关卡:18. 眼见为实;19. 生存时间;20. 持续付出;21. 农夫与小矮人