Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
zetcode-zh
提交
fbb98dea
Z
zetcode-zh
项目概览
OpenDocCN
/
zetcode-zh
10 个月 前同步成功
通知
2
Star
157
Fork
40
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zetcode-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fbb98dea
编写于
6月 17, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-06-17 09:48:02
上级
7ec93e86
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
27 addition
and
27 deletion
+27
-27
docs/graph/3.md
docs/graph/3.md
+1
-1
docs/graph/4.md
docs/graph/4.md
+5
-5
docs/graph/5.md
docs/graph/5.md
+4
-4
docs/graph/64.md
docs/graph/64.md
+1
-1
docs/graph/7.md
docs/graph/7.md
+2
-2
docs/graph/8.md
docs/graph/8.md
+10
-10
docs/graph/9.md
docs/graph/9.md
+4
-4
未找到文件。
docs/graph/3.md
浏览文件 @
fbb98dea
...
...
@@ -271,7 +271,7 @@ public class DonutExample extends JFrame {
## 绘制图像
当我们创建计算机游戏时,我们经常使用图像。 在下一个示例中,我们加载图像并将其绘制在板上。 如果找不到图像文件,请查看 Java 教程中的
[
显示图像
。
](
/java/displayimage/
)
当我们创建计算机游戏时,我们经常使用图像。 在下一个示例中,我们加载图像并将其绘制在板上。 如果找不到图像文件,请查看 Java 教程中的
[
显示图像
](
/java/displayimage/
)
。
`Board.java`
...
...
docs/graph/4.md
浏览文件 @
fbb98dea
...
...
@@ -189,7 +189,7 @@ public void paintComponent(Graphics g) {
```
自定义绘画是通过
`paintComponent()`
方法完成的。 请注意,我们还调用其父级的
`paintComponent()`
方法。 实际绘画将委托给
drawStar()
方法。
自定义绘画是通过
`paintComponent()`
方法完成的。 请注意,我们还调用其父级的
`paintComponent()`
方法。 实际绘画将委托给
`drawStar()`
方法。
```
private void drawStar(Graphics g) {
...
...
@@ -200,7 +200,7 @@ private void drawStar(Graphics g) {
```
在
drawStar()
方法中,我们使用
`drawImage()`
方法在窗口上绘制图像。
`Toolkit.getDefaultToolkit().sync()`
在缓冲图形事件的系统上同步绘画。 没有这条线,动画在 Linux 上可能会不流畅。
在
`drawStar()`
方法中,我们使用
`drawImage()`
方法在窗口上绘制图像。
`Toolkit.getDefaultToolkit().sync()`
在缓冲图形事件的系统上同步绘画。 没有这条线,动画在 Linux 上可能会不流畅。
```
@Override
...
...
@@ -220,7 +220,7 @@ public void actionPerformed(ActionEvent e) {
```
计时器反复调用
`actionPerformed()`
方法。 在方法内部,我们增加星形对象的
x 和 y
值。 然后我们调用
`repaint()`
方法,这将导致
`paintComponent()`
被调用。 这样,我们可以定期重绘
`Board`
从而制作动画。
计时器反复调用
`actionPerformed()`
方法。 在方法内部,我们增加星形对象的
`x`
和
`y`
值。 然后我们调用
`repaint()`
方法,这将导致
`paintComponent()`
被调用。 这样,我们可以定期重绘
`Board`
从而制作动画。
![
Star
](
img/875be503daaea390fdb5424e7418d8c4.jpg
)
...
...
@@ -540,7 +540,7 @@ public class Board extends JPanel
```
在前面的示例中,我们以特定的间隔执行任务。 在此示例中,动画将在线程内进行。
`run()`
方法仅被调用一次。 这就是为什么我们在方法中有一个
while
循环的原因。 从该方法中,我们称为
`cycle()`
和
`repaint()`
方法。
在前面的示例中,我们以特定的间隔执行任务。 在此示例中,动画将在线程内进行。
`run()`
方法仅被调用一次。 这就是为什么我们在方法中有一个
`while`
循环的原因。 从该方法中,我们称为
`cycle()`
和
`repaint()`
方法。
```
@Override
...
...
@@ -563,6 +563,6 @@ sleep = DELAY - timeDiff;
```
`cycle()`
和
`repaint()`
方法可能在不同的
while 周期中花费不同的时间。 我们计算两种方法的运行时间,并将其从
`DELAY`
常数中减去。 这样,我们要确保每个 while
周期都在恒定时间运行。 在我们的情况下,每个周期为
`DELAY`
ms。
`cycle()`
和
`repaint()`
方法可能在不同的
`while`
周期中花费不同的时间。 我们计算两种方法的运行时间,并将其从
`DELAY`
常数中减去。 这样,我们要确保每个
`while`
周期都在恒定时间运行。 在我们的情况下,每个周期为
`DELAY`
ms。
Java 2D 游戏教程的这一部分涵盖了动画。
\ No newline at end of file
docs/graph/5.md
浏览文件 @
fbb98dea
...
...
@@ -4,9 +4,9 @@
在 Java 2D 游戏教程的这一部分中,我们将使用精灵。
术语
Sprite
具有多种含义。 它用于表示场景中的图像或动画。
术语
精灵
具有多种含义。 它用于表示场景中的图像或动画。
它也用于表示游戏中的任何可移动对象。 含义之一也是在游戏中封装角色的代码。 在我们的教程中,通过使用
Sprite
,我们引用了一个可移动对象或其 Java 类。
它也用于表示游戏中的任何可移动对象。 含义之一也是在游戏中封装角色的代码。 在我们的教程中,通过使用
精灵
,我们引用了一个可移动对象或其 Java 类。
## 移动精灵
...
...
@@ -131,7 +131,7 @@ public void move() {
```
`move()`
方法更改子画面的坐标。 这些
x 和 y
值在
`paintComponent()`
方法中用于绘制子画面的图像。
`move()`
方法更改子画面的坐标。 这些
`x`
和
`y`
值在
`paintComponent()`
方法中用于绘制子画面的图像。
```
if (key == KeyEvent.VK_LEFT) {
...
...
@@ -403,7 +403,7 @@ public Sprite(int x, int y) {
```
构造函数初始化
x 和 y
坐标以及
`visible`
变量。
构造函数初始化
`x`
和
`y`
坐标以及
`visible`
变量。
`Missile.java`
...
...
docs/graph/64.md
浏览文件 @
fbb98dea
...
...
@@ -259,7 +259,7 @@ const C_WIDTH = 300;
```
`DOT_SIZE`
是苹果的大小和蛇的点。
`ALL_DOTS`
常数定义画布上可能的最大点数(
900 = 300
* 300/10 *
10
)。
`MAX_RAND`
常数用于计算苹果的随机位置。
`DELAY`
常数确定游戏的速度。
`C_HEIGHT`
和
`C_WIDTH`
常数存储画布的大小。
`DOT_SIZE`
是苹果的大小和蛇的点。
`ALL_DOTS`
常数定义画布上可能的最大点数(
`900 = 300 * 300/10 * 10`
)。
`MAX_RAND`
常数用于计算苹果的随机位置。
`DELAY`
常数确定游戏的速度。
`C_HEIGHT`
和
`C_WIDTH`
常数存储画布的大小。
```
const LEFT_KEY = 37;
...
...
docs/graph/7.md
浏览文件 @
fbb98dea
...
...
@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/tutorials/javagamestutorial/puzzle/](https://zetcode.com/tutorials/javagamestutorial/puzzle/)
在 Java 游戏教程的这一部分中,我们创建一个 Java
Puzzle
游戏克隆。 源代码和图像可以在作者的 Github
[
Java Swing 益智游戏
](
https://github.com/janbodnar/Puzzle-game-in-Java-Swing
)
存储库中找到。
在 Java 游戏教程的这一部分中,我们创建一个 Java
解谜
游戏克隆。 源代码和图像可以在作者的 Github
[
Java Swing 益智游戏
](
https://github.com/janbodnar/Puzzle-game-in-Java-Swing
)
存储库中找到。
## Java 益智游戏要点
...
...
@@ -489,7 +489,7 @@ private void updateButtons() {
```
`updateButtons()`
方法将列表映射到面板的网格。 首先,使用
`removeAll()`
方法删除所有组件。
for
循环用于通过
`buttons`
列表,将重新排序的按钮添加回面板的布局管理器。 最后,
`validate()`
方法实现了新的布局。
`updateButtons()`
方法将列表映射到面板的网格。 首先,使用
`removeAll()`
方法删除所有组件。
`for`
循环用于通过
`buttons`
列表,将重新排序的按钮添加回面板的布局管理器。 最后,
`validate()`
方法实现了新的布局。
```
private void checkSolution() {
...
...
docs/graph/8.md
浏览文件 @
fbb98dea
# Java
Snake
# Java
贪食蛇
> 原文: [https://zetcode.com/tutorials/javagamestutorial/snake/](https://zetcode.com/tutorials/javagamestutorial/snake/)
在 Java 2D 游戏教程的这一部分中,我们创建一个 Java
Snake
游戏克隆。 源代码和图像可以在作者的 Github
[
Java-Snake-Game
](
https://github.com/janbodnar/Java-Snake-Game
)
存储库中找到。
在 Java 2D 游戏教程的这一部分中,我们创建一个 Java
贪食蛇
游戏克隆。 源代码和图像可以在作者的 Github
[
Java-Snake-Game
](
https://github.com/janbodnar/Java-Snake-Game
)
存储库中找到。
##
Snake
##
贪食蛇
Snake
是较旧的经典视频游戏。 它最初是在 70 年代后期创建的。 后来它被带到 PC 上。 在这个游戏中,玩家控制蛇。 目的是尽可能多地吃苹果。 蛇每吃一个苹果,它的身体就会长大。 蛇必须避开墙壁和自己的身体。 该游戏有时称为 Nibbles 。
贪食蛇
是较旧的经典视频游戏。 它最初是在 70 年代后期创建的。 后来它被带到 PC 上。 在这个游戏中,玩家控制蛇。 目的是尽可能多地吃苹果。 蛇每吃一个苹果,它的身体就会长大。 蛇必须避开墙壁和自己的身体。 该游戏有时称为 Nibbles 。
## Java
Sname
游戏的开发
## Java
贪食蛇
游戏的开发
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则在面板中间显示“
Game Over”消息。
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则在面板中间显示“Game Over”消息。
`Board.java`
...
...
@@ -275,7 +275,7 @@ private final int DELAY = 140;
```
`B_WIDTH`
和
`B_HEIGHT`
常数确定电路板的尺寸。
`DOT_SIZE`
是苹果的大小和蛇的点。
`ALL_DOTS`
常数定义了板上可能的最大点数(
900 =(300
* 300)/(10 *
10)
)。
`RAND_POS`
常数用于计算苹果的随机位置。
`DELAY`
常数确定游戏的速度。
`B_WIDTH`
和
`B_HEIGHT`
常数确定电路板的尺寸。
`DOT_SIZE`
是苹果的大小和蛇的点。
`ALL_DOTS`
常数定义了板上可能的最大点数(
`900 = (300 * 300) / (10 * 10)`
)。
`RAND_POS`
常数用于计算苹果的随机位置。
`DELAY`
常数确定游戏的速度。
```
private final int x[] = new int[ALL_DOTS];
...
...
@@ -283,7 +283,7 @@ private final int y[] = new int[ALL_DOTS];
```
这两个数组存储蛇的所有关节的
x 和 y
坐标。
这两个数组存储蛇的所有关节的
`x`
和
`y`
坐标。
```
private void loadImages() {
...
...
@@ -334,7 +334,7 @@ private void checkApple() {
```
如果苹果与头部碰撞,我们会增加蛇的关节数。 我们称
`locateApple()`
方法为随机放置一个新的
Apple
对象。
如果苹果与头部碰撞,我们会增加蛇的关节数。 我们称
`locateApple()`
方法为随机放置一个新的
`Apple`
对象。
在
`move()`
方法中,我们有游戏的密钥算法。 要了解它,请看一下蛇是如何运动的。 我们控制蛇的头。 我们可以使用光标键更改其方向。 其余关节在链上向上移动一个位置。 第二关节移动到第一个关节的位置,第三关节移动到第二个关节的位置,依此类推。
...
...
@@ -432,4 +432,4 @@ pack();
Figure: Snake
这是 Java 中的 Snake 游戏。
\ No newline at end of file
这是 Java 中的贪食蛇游戏。
\ No newline at end of file
docs/graph/9.md
浏览文件 @
fbb98dea
...
...
@@ -4,7 +4,7 @@
在 Java 2D 游戏教程的这一部分中,我们创建一个简单的 Breakout 游戏克隆。 源代码和图像可以在作者的 Github
[
Java-Breakout-Game
](
https://github.com/janbodnar/Java-Breakout-Game
)
存储库中找到。
Breakout 是一款最初由 Atari Inc.开发的街机游戏。该游戏创建于 1976 年。
Breakout 是一款最初由 Atari Inc.
开发的街机游戏。该游戏创建于 1976 年。
在此游戏中,玩家移动屏幕上的桨叶并弹起一个或多个球。 目的是销毁窗口顶部的砖块。
...
...
@@ -367,7 +367,7 @@ public class Paddle extends Sprite {
```
这是
`Paddle`
类。 它封装了 Breakout 游戏中的
paddle
对象。 操纵杆通过左右箭头键控制。 通过按箭头键,我们设置方向变量。 通过释放箭头键,将
`dx`
变量设置为零。 这样,桨停止移动。
这是
`Paddle`
类。 它封装了 Breakout 游戏中的
桨
对象。 操纵杆通过左右箭头键控制。 通过按箭头键,我们设置方向变量。 通过释放箭头键,将
`dx`
变量设置为零。 这样,桨停止移动。
```
void move() {
...
...
@@ -387,7 +387,7 @@ void move() {
```
桨叶仅在水平方向上移动,因此我们仅更新
x
坐标。 如果条件确保桨不通过窗口边缘。
桨叶仅在水平方向上移动,因此我们仅更新
`x`
坐标。 如果条件确保桨不通过窗口边缘。
`com/zetcode/Board.java`
...
...
@@ -809,7 +809,7 @@ if (bricks[i].getRect().contains(pointTop)) {
```
如果球撞击砖的底部,我们将改变球的
y
方向; 它下降了。
如果球撞击砖的底部,我们将改变球的
`y`
方向; 它下降了。
`com/zetcode/Breakout.java`
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录