在Java中设计一个项目

3

我不太清楚如何设计一个项目。我正在计算机科学系的第一年,仍在学习Java的许多信息,例如继承、多态、抽象类、接口等等。我对这些课程非常好奇,并且愿意好好地学习它们。实际上,我没有错过这些课程中的任何知识点,也很好地掌握了它们。但是没有人教我如何设计一个项目,我们应该在学校期末设计一个体面的Java项目。

我和我的三个同学决定制作一个新游戏。它只用一个球进行游戏,而球有可变的两种颜色。两名玩家的颜色与此球的颜色相同。当球在一个玩家的颜色时,这个玩家就可以移动球并试图得分到另一个玩家的目标。这是我们想法的基本逻辑,我们可以为这个游戏添加一些新的设施和选项。我们非常想实现这个项目。但是...虽然我们从讲座中听取并学习,但我们真的很困惑如何逐步设计这个项目。我只是试图演示我们项目的逻辑。同时,我们还在学习GUI,但我们刚刚开始学习。所以我想了解关于我们必须遵循哪些方式来设计和制作这种项目的信息。我只想知道关于类层次结构、抽象类、超类、覆盖等方面的技巧和捷径,并充分利用我们对这些术语的知识(我们知道所有这些术语,但不知道如何使用它们来设计一个项目)。如果您能提供有关这些的任何信息,我会非常非常非常高兴并能改变我的看法。这将促进我们的进展。谢谢!

2个回答

4
你可以看一下这个Java Pong游戏,它非常简单,并包含一些源代码,供你学习。
更普遍的建议:
- 你需要一种显示游戏发生情况的方式。在一个非常简单的游戏中,最容易的方法是使用JPanel并覆盖它的paintComponent()方法以正确地绘制游戏屏幕(例如,在正确的x、y位置绘制玩家)。 - 你还需要一个游戏循环,它应该做以下几件事: - 读取玩家的任何输入 - 更新游戏中物体的位置 - 在JPanel上调用repaint(),以便重新绘制屏幕 - 使用Thread.sleep(30)等待短时间睡眠30毫秒 - 回到游戏循环的开始处 - 我建议将定义用户界面(框架、面板等)的类与定义游戏逻辑(玩家、球等)的类分开。理想情况下,游戏逻辑类不应包含任何与它们如何显示或交互有关的代码。 对于如此简单的游戏,实际上不需要很多类。我推荐使用以下类似内容:
- App - 包含主(...)函数,用于启动游戏。至少应该创建一个JFrame并在其中添加一个单独的GamePanel,但是如果你愿意,可以创建其他UI元素。如果你在这个类中也实现了游戏循环,那么在所有设置完成后,主方法应该调用此方法。 - GamePanel(扩展JPanel)- 包含屏幕绘制逻辑,还可能检测鼠标移动。 - 游戏 - 表示整个游戏状态的类,包括两个玩家和球的位置。 - Player - 代表玩家的小类,具有x、y坐标。 - Ball - 代表球的小类,具有x、y坐标和dx、dy速度。

0

GUI不太适合制作游戏。 GUI(图形用户界面,Java中的Swing)是一组按钮和其他文本/图像内容,与用于制作游戏的3D渲染引擎(例如OpenGL,在Java上最常用,无论是在框架中还是通过低级库)不同。

您在这里有选择: 您可以决定做一个简单的项目,例如控制台程序,但它将在GUI上运行,例如GUI程序来移动文件。

或者你可以学习OpenGL或类似技术(Java的JOGL),并制作那个游戏! (JavaFX也可能有效,但我对此了解甚少)

现在谈设计。

通常,您需要一个主“循环”类,该类将输出每个帧等。 主“循环”类应继承允许所有其他组件获取渲染粒子、时间计数器等的接口。

那么你需要几个组件,一个用于球,一个用于任何其他物理对象(不要忘记使它们实现“物理”接口并将它们作为“物理对象引用”添加到主类中,以便每帧计算它们的物理!),一个用于背景,一个用于用户输入。

您还可以添加多个其他组件,每个组件都会执行特定的操作。


谢谢您的回答,但那不是我实际需要的。我想要一些与设计相关的东西。 - El3ctr0n1c4
更新以包含设计信息,当然我在写这个的时候并不一定是正确的做法。它旨在为您提供架构示例,您自己将使用它们。这是一个管理器(主要)-组件(输入和对象)设计的示例。 - user1241335

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接