《Java编程:从简单DotCom游戏入门》
立即解锁
发布时间: 2025-08-18 01:24:31 阅读量: 2 订阅数: 9 

Head First Java:趣味学习编程语言
### 《Java 编程:从简单 Dot Com 游戏入门》
#### 一、游戏介绍
在编程学习中,通过实际的项目来巩固知识是非常有效的方法。这里我们将介绍如何构建一个名为 “Sink a Dot Com” 的游戏,它类似于经典的海战游戏,但有一些独特的规则。
##### 游戏目标
在最少的猜测次数内击沉电脑的所有 Dot Coms,并根据表现获得相应的评级。
##### 游戏设置
当游戏程序启动时,电脑会在一个虚拟的 7 x 7 网格上放置三个 Dot Coms。之后,游戏会提示玩家进行第一次猜测。
##### 游戏玩法
由于尚未学习构建图形用户界面(GUI),这个版本的游戏在命令行中运行。电脑会提示玩家输入一个猜测(如 “A3”、“C5” 等),玩家在命令行输入后,会看到相应的结果,可能是 “Hit”(命中)、“Miss”(未命中)或 “You sunk Pets.com”(击沉了某个 Dot Com)。当玩家击沉所有三个 Dot Coms 时,游戏结束并输出玩家的评级。
以下是一个游戏交互的示例:
```plaintext
%java DotComBust
Enter a guess A3
miss
Enter a guess B2
miss
Enter a guess C4
miss
Enter a guess D2
hit
Enter a guess D3
hit
Enter a guess D4
Ouch! You sunk Pets.com : (
kill
Enter a guess B4
miss
Enter a guess G3
hit
Enter a guess G4
hit
Enter a guess G5
Ouch! You sunk AskMe.com : (
kill
Enter a guess A7
miss
```
#### 二、游戏的高级设计
在开始编写代码之前,我们需要进行高级设计,明确游戏的整体流程和所需的类与方法。
##### 游戏流程
1. **用户启动游戏**:游戏创建三个 Dot Coms。
2. **游戏开始**:重复以下步骤,直到没有更多的 Dot Coms:
- 游戏将三个 Dot Coms 放置在虚拟网格上。
- 提示用户进行猜测。
- 检查用户的猜测,判断是命中、未命中还是击沉,并采取相应的行动(如果命中,删除相应的单元格;如果击沉,删除该 Dot Com)。
3. **游戏结束**:根据用户的猜测次数给予评级。
以下是游戏流程的 mermaid 流程图:
```mermaid
graph TD;
A[Start] --> B[Game set-up];
B --> C[Get user guess];
C --> D[Check guess];
D --> E{hit?};
E -- Yes --> F[remove location cell];
E -- No --> G{miss?};
G -- Yes --> C;
G -- No --> H{kill?};
H -- Yes --> I[remove Dot Com];
I --> J{still some Dot Coms alive?};
J -- Yes --> C;
J -- No --> K[display user score/rating];
K --> L[game over];
F --> J;
```
#### 三、简单 Dot Com 游戏
在构建完整的 “Sink a Dot Com” 游戏之前,我们先从一个简化版本的 “Simple Dot Com Game” 开始。这个简化版本的游戏将帮助我们更好地理解游戏的核心逻辑,为后续构建复杂版本打下基础。
##### 简化规则
- 不是在 2 - D 网格中,而是将 Dot Com 隐藏在单行中。
- 只使用一个 Dot Com,而不是三个。
##### 游戏步骤
1. **游戏开始**:创建一个 DotCom 实例,并为其分配一个位置(单行七个单元格中的三个连续单元格)。位置用整数表示,例如 1、2、3。
2. **游戏进行**:提示用户进行猜测,然后检查猜测是否命中 DotCom 的三个单元格之一。如果命中,增加命中次数变量 `numOfHits`。
3. **游戏结束**:当三个单元格都被命中时(`numOfHits` 变量的值为 3),游戏结束,并告知用户击沉 DotCom 所用的猜测次数。
以下是一个简化游戏交互的示例:
```plaintext
%java SimpleDotComGame
enter a number 2
hit
enter a number 3
hit
enter a number 4
miss
enter a number 1
kill
You took 4 guesses
```
#### 四、开发类的步骤
在编写 Java 类时,我们通常遵循以下步骤:
1. **明确类的功能**:确定类应该完成的任务。
2. **列出实例变量和方法**:定义类的属性和行为。
3. **编写预备代码(Prepcode)**:一种伪代码形式,帮助我们关注逻辑而不担心语法。
4. **编写测试代码**:验证方法是否按预期工作。
5. **实现类**:编写实际的 Java 代码。
6. **测试方法**:运行测试代码,检查方法的正确性。
7. **调试和重新实现**:根据测试结果进行必要的调整。
对于 `SimpleDotCom` 类和 `SimpleDotComGame` 类,我们将按照这些步骤进行开发。
##### SimpleDotCom 类
- **实例变量**:
- `int [] locationCells`:用于存储 DotCom 所在的单元格位置。
- `int numOfHits`:记录命中次数,初始值为 0。
- **方法**:
- `String checkYourself(String guess)`:检查用户的猜测,返回 “hit”、“miss” 或 “kill”。
- `void setLocationCells(int[] loc)`:设置 DotCom 的位置。
以下是 `SimpleDotCom` 类的预备代码:
```plaintext
DECLARE an int array to hold the location cells. Call it locationCells.
DECLARE an int to hold the number of hits. Call it numOfHits and SET it to 0.
DECLARE a checkYourself() method that takes a String for the user’s guess (“1”, “3”, etc.),
checks it, and returns a result representing a “hit”, “miss”, or “kill”.
DECLARE a setLocationCells() setter method that takes an int array (which has the three cell
locations as ints (2,3,4, etc.).
METHOD: String checkYourself(String userGuess)
GET the user guess as a String parameter
CONVERT the user guess to an int
REPEAT with each of the location cells in the int array
// COMPARE the user guess to the location cell
IF the user guess matches
INCREMENT the number of hits
```
0
0
复制全文


