2010-09-07 38 views
0

我上周开始学习java。 (去年我参加了一个C班。)第一个Java游戏:思路和技巧

现在我需要创建/编写一个简单的游戏。这里是方向,其次是我的问题:


你可以决定你想要什么样的角色扮演游戏。它必须是自上而下的视图游戏或侧置滚动游戏。玩家要做的事情是:杀东西,找东西,避免事情等。不管它是什么,都需要事情的发展。问题是你不知道如何使用Java来做到这一点。目前,我们将使用基于文本的游戏。您必须使用字符来表示正在移动的不同事物。由于它是基于字符的,因此您具有角色位置和线条。您可以将每个可能的字符位置视为一个像素。你可以通过定义有多少字符行和列来决定你的“屏幕”有多大。然后,你每行写出许多字符,并且每个“转向”游戏的许多行。 玩家应该能够暂停游戏,停止游戏并开始新游戏,或者退出游戏。所有这些,包括玩游戏都需要键盘输入。您将无法使用鼠标。

统计:你必须跟踪一些东西 - 玩家的得分,获得的金钱,获得的东西,获得的经验等等。这不必影响游戏的玩法,至少现在还没有。

一些面向对象的需求 您应该在此作业中至少有5个类:播放器,游戏,应用程序,移动事物的类和不移动的事物的类。您可能想要其他类,或使用继承。有一个超类的3个子类不算作4个类。那是一堂课。

游戏类将包含玩游戏的规则。这是在进行中管理游戏。 你的应用程序类负责启动一切。您可能想要提示玩家的名字等,然后开始游戏。先前的玩家数据将从文件中读取。当玩家完成游戏时,您需要将他们当前的数据以及其他之前的玩家数据保存到文件中。



1)我没有玩过多年这样的比赛。 (这可能是7岁时的pacman)。你推荐我尝试实现什么?什么是可行的/容易的,并教我?

2)上班前我应该知道或考虑的任何提示/事情?有什么建议?

回答

3

这很简单,学习才是本质。因此,请继续努力,并从中吸取教训。 StackOverflow是针对实际的编程问题,所以当你有代码的实际编程问题时,随时提问。

0

我想说的是pacman:它的实现相当简单,并且会像其他类型的游戏一样技术化你的Java概念(不同之处在于更复杂的游戏需要你使用更复杂的算法来做东西,但是如果你的主要目标是学习不是你主要目标的Java语言)。

我建议你的唯一的事情就是从一开始就以面向对象的思路去做。如果你只用C编程,你遇到的主要困难就是从程序的方式转换。所以尝试使用类,接口,继承,多态,也许在那里抛出一些使用反射的动态行为...也就是说,如果你想学习Java语言,你应该用Java编程方式进行实验。

+0

我会反对派克曼,因为它是实时的,所以可能更难做出。基于步骤的游戏更容易制作(例如推箱子) – 2010-09-07 08:12:10

+0

其实你可以实现它基于...类似nethack的东西,但是当你遇到一个怪物时,你会死:-) – nivox 2010-09-07 08:31:03

+0

实时无所谓,它会使他必须学习足够多的线程来每秒调用一次移动函数 – 2010-09-07 22:09:17

0

java中的游戏开发非常简单。你的游戏定义有点详细,这是一个好的开始。你可能想要退房David Brackeen's这本书,这是相当深入的。

0

我会推荐同时阅读一本书。所以这本书教你如何制作一个好的游戏代码结构,并教你一些关于面向对象开发的内容。

0

说明书有点小姐带领。整个第一段是我首先忽略的内容。这是因为它谈论的是用户界面,这不像它背后的引擎那么重要。实际上,所有的用户界面都将显示游戏引擎的当前状态,并为引擎执行的下一组操作收集输入的方式。因此,为什么我说忽略它开始。

接下来,我将拿出一张老式的纸和一本Java编程指南手册,开始勾勒出您将需要的基本类以及每个可能的数据项和函数(方法)的概念。这不是最终的设计,也不需要很复杂。只要阅读设计和写作课程,并勾画出你认为需要的东西,尽可能简单。这可能需要几轮才能在你的脑海中澄清。一些基本的东西首先要看的是接口vs具体类和java api集合类。记住,保持简单并牢记一个基本原则 - 每个班级只应做一件事。即一个生物类应该只包含与生物有关的信息和功能,一个得分类应该只存储和管理玩家得分等。

一旦你有一个纸大纲适合你(记住它只需要是一个基本的起点),然后拉出IDE并对类进行编码。你会发现,当你这样做时,你会改变设计,添加更多的方法和数据等等。没关系,这是过程的一个自然部分。当这一切开始发生时,你正在重塑事物,查找“重新分解”。

一旦你有一些非常基本的代码,查找“单元测试”。这使您能够对代码运行一些测试来测试功能。您还可以测试错误情况并为您的游戏引擎设置各种场景。注意在这一点上我们还没有讨论过UI。这是因为可以根本没有任何接口来开发和测试你的完整游戏引擎。单元测试是专门为此目的而设计的。它可以让你专注于引擎,而不是被UI分散注意力。

现在,你将对你的目标有所了解,并且可以做出有关你想要的UI风格的决定。因为你现在有一个工作的引擎,所以设计和编写一个UI将非常简单。

0

OK,其实有3个重要部分:

  1. 游戏设计,最好开始代码ANYTHING之前绘制的一切在纸上,因为这样你会花这样的时间更少在重构您的代码,因为您事先没有想到XY

  2. 发动机,这会占用大量的在开始编码,因为所有的FPS限制的东西等,是不是因为它看起来,地狱即使考虑键盘输入CAN给一个很多问题时容易有没有办法切换autorepeat,谈论跨平台?忘了它,至少在Linux下吧

  3. 代码的实际布局,不要一路让一切从一个巨型基类继承。最好有多个具有不同功能的基类,甚至可能有一些你不想使用基于类的方法,比如效果,同时处理所有效果的ManagerInstance会更容易,它只是有方法来创建不同类型的效果,然后在一个大的“循环”中处理它们。

至于如何开始,我已经有了一些基本的引擎代码躺在身边超过我的GitHubs,你可能会想检查出来,因为它可以给你,你会多少引擎的代码有一些见解写:
http://github.com/BonsaiDen/Bonsai-Game-Library