看懂环境
知道 Java、IntelliJ IDEA、Robocode Tank Royale 与 GitHub 各自负责什么。
Lecture 01 · Java Programming with Robocode Tank Royale
启动你的第一辆自动战斗坦克,并建立“改代码、运行、观察、再修正”的学习循环。
Teacher
这就是我们四堂课要亲手做出来的成果:一辆能自己移动、扫描、瞄准与开火的坦克。
知道 Java、IntelliJ IDEA、Robocode Tank Royale 与 GitHub 各自负责什么。
运行第一份 Bot(机器人)代码,观察坦克移动、转向、扫描与开火。
完成一次 commit(提交),把今天能运行的版本保存起来。
课程介绍、Robocode 战场演示、环境检查。
认识 IntelliJ IDEA 界面、运行配置与 GitHub 模板流程。
认识 Java 程序结构,并示范修改移动、转向与雷达扫描。
学生实作、现场 Debug、Git 保存阶段成果。
Java 是一门强类型 (strongly-typed)、跨平台的编程语言。自 1995 年发布至今,仍是企业级系统、Android 应用与银行金融系统的主力语言之一。
变量必须先声明类型,许多错误在编译 (compile) 阶段就被发现,而不是等到运行时才出问题。
“一次编写,到处运行”(Write Once, Run Anywhere):同一份代码可在 Windows、macOS、Linux 上运行。
文档、库与社区资源丰富,向后兼容性好,适合作为第一门编程语言长期学习。
Google、Netflix、Uber、Amazon 与众多银行系统都大量使用 Java。学好它,对未来职场有长期价值。
MyFirstBot.java 里写人类可读的 Java 代码。
javac 把源代码翻译成字节码 (bytecode),也就是 .class 文件。
JDK(开发工具包)= 编译 + 运行;JRE(运行环境)= 只能运行。我们要写代码,所以需要安装 JDK 25。
出现 “compile error(编译错误)”时,代表代码还没成功翻译,坦克根本不会启动。先过编译,再谈策略。
Robocode Tank Royale 是一个编程游戏:我们不是直接操控坦克,而是写一个程序,让坦克自己在战场中移动、扫描、开火和反应。
参考: Anatomy of a Bot
先让程序跑起来,再逐步理解每一行代码。编程初学者最需要的不是背术语,而是建立可重复的排查流程。
MyFirstBot.java,确认坦克可以运行。若课前无法完成 GitHub,可先在本机 commit;下一堂课再补齐 push。
使用学生代码模板,IntelliJ IDEA 会读取已准备好的 .idea 设置。
从 Run widget(运行控件)选择预设配置,一键启动 Robocode Tank Royale。
再选择 Bot 的运行配置,让 MyFirstBot 加入战场。
课堂目标不是学习复杂配置,而是先体验“改代码、运行、观察结果”的循环。
MyFirstBot.java描述坦克的行为:什么时候启动、怎样移动、怎样扫描、怎样反应。
MyFirstBot.json描述坦克的资料:名称、版本、作者、平台与使用的编程语言。
官方建议初学者先用 JSON config file(JSON 配置文件)提供 Bot 信息。
package MyFirstBot;
import dev.robocode.tankroyale.botapi.*;
import dev.robocode.tankroyale.botapi.events.*;
public class MyFirstBot extends Bot {
// 程序入口:启动这辆坦克
public static void main(String[] args) {
new MyFirstBot().start();
}
// 每个回合开始时被呼叫:定义坦克的主要行为
@Override
public void run() {
while (isRunning()) {
forward(100);
turnGunLeft(360);
back(100);
turnGunLeft(360);
}
}
// 扫描到敌人 → 开火(第二课详解)
@Override
public void onScannedBot(ScannedBotEvent e) {
fire(1);
}
}
模板里的 MyFirstBot.java 还多了一个被击中时的反应方法
onHitByBullet(第三课讲);今天我们主要看 run()。
package MyFirstBot;:声明这份代码属于哪个包 (package),对应它所在的文件夹。
import ...;:导入 (import) Robocode
提供的现成工具,才能使用 Bot 与各种事件。
class MyFirstBot:类 (Class),这辆坦克的设计图。
main():主方法 (Main Method),Java
程序的入口,从这里启动坦克。
run():运行方法 (Run Method),定义每回合开始后坦克要持续做的事。
while:循环 (Loop),让同一组动作不断重复,直到 Bot
停止运行。
文件名必须和类名一致:MyFirstBot 类要放在 MyFirstBot.java 里。
MyFirstBot 是一个
Class(类),像一张坦克设计图:描述这辆坦克有哪些行为。
extends Bot 表示继承 Robocode 提供的
Bot 父类,因此可以直接使用 forward()、fire()
等现成 Method(方法)。
今天先建立直觉;第二课起会在事件与策略中反复用到这些概念。
Robocode 是回合制 (turn-based) 的。理解这个循环,就能预测代码何时运行:
run() 里的指令(如
forward)不是瞬间完成,而是一回合一回合地推进。
事件处理器(如 onScannedBot)从第二课开始详解。
forward(100) 改成 forward(200),观察坦克前进距离。back(100) 改成 back(50),观察移动节奏。turnGunLeft(360) 改成
turnGunRight(360),观察炮塔与雷达扫描方向(本模板中两者联动转动)。
小步修改是 Debugging(调试)的基础。
试着让坦克走出一个比较不规则的巡逻路线,但不要一次改太多。
| 编译器信息 (compiler message) | 含义 | 怎么办 |
|---|---|---|
';' expected |
少了分号 | 看错误指出的行号,在语句结尾补上 ; |
cannot find symbol |
名字拼错,或忘了 import | 检查方法/变量的拼写与大小写,确认相关包已 import |
class MyFirstBot is public, should be declared in a file named
MyFirstBot.java
|
文件名与类名不一致 | 让文件名和类名完全一样 |
'}' expected |
括号 { } 不成对 |
先检查大括号配对,再看小括号 ( ) |
排查顺序:先看错误行号 → 读懂信息 → 小步只修一处 → 重新运行。如果改太多找不到原因,回到上一个能运行的 commit(提交)。
Complete first bot movement。软件团队每天都在用 Git 保存与协作。它像“进度存档”,能让你安心做小步实验,改坏了也能回到上一版。
建议 commit message(提交信息):Complete first bot movement。课后延伸:给
Bot 改名,并填好 JSON config file(JSON 配置文件)的作者字段。
趣味 Java 编程启蒙班
© 2026 by
Eng Zer Jun
is licensed under
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International