Answers:
假设您是编程的绝对新手,并且为了使我的示例基于您可能知道的知识,请在编写具有菜单的控制台应用程序时希望用户在可用选项中进行选择,那么您首先要做什么?
如果您想创建菜单,那您很明白,但是如果用户按下了不属于可用选项的键之后,该怎么办?
我的赌注是#2,该应用程序将继续运行,直到用户明确按下该键退出控制台应用程序为止。
一个游戏有点像!您想何时退出游戏?当用户选择时,对不对?因此,动作或游戏菜单必须持续到用户希望退出为止。然后,您将必须创建一个循环,告诉程序继续运行,直到按下此退出键为止。
您刚刚被介绍给游戏循环。游戏只是在用户明确退出之前一直运行的另一个程序。
在游戏循环中,当您玩游戏时,移动是在屏幕上特定坐标处绘制的图像。当用户/播放器按下方向键(例如)时[Left]
,您可以使图像刷新其坐标,同时减小其X坐标,从而给人留下向左运动的印象。您必须获得这些输入,才能获得玩家希望其角色/船接下来要做什么。然后,游戏循环继续循环,直到您可以从玩家那里获得另一个所需的动作为止,直到退出游戏为止。
好吧,恐怕这个答案开始的时间就足够长了,所以我希望我能向您指出您可能感兴趣的另外两个问题。
第三个链接不是关于如何开始编写游戏,而是关于如何使精灵在屏幕上移动。由于您还询问了如何使图形在屏幕上移动,因此我认为这可能会让您感兴趣。
我希望这有帮助!=)
在制作控制台应用程序时,最有可能使用称为print()或read()或write()的函数。替代这些图形游戏,图形游戏使用其他功能,这些功能可以与set_pixel()一样低,用于将屏幕上单个像素的颜色设置为整个框架,从而使您可以绘制具有很多效果的三维模型。
但是主要思想与简单的数学控制台应用程序相同。您从用户那里得到输入,根据它采取行动来修改一些变量,然后打印(或绘制)一些输出。游戏和其他交互式程序每秒执行30、60或更多的这些输入-计算-输出周期。当然,每个部分都可以随您想要而复杂,但是通常都归结为输入-计算-输出。因此,请放心,您在正确的道路上。
至于建议,我会说你尽可能多地保持编程。如果您有兴趣专注于游戏编程,并且只知道控制台编程,请尝试进行基于文本的小型冒险或RPG。这样,您将练习很多方法来管理变量,使用随机数和组织代码。
在获得一些经验之后,请继续学习图形库的基础知识。如果您要进行过程编程,则建议您使用OpenGL,如果您要进行面向对象的编程,则建议使用XNA。
但是,不要一次拿太多东西。在学习复杂的工具,学习如何管理源代码树,学习如何迭代数组,学习如何获取输入和声音的过程中,很容易感到失望您正在设计游戏。
还有很长的路要走,但是请记住,乐趣实际上正在逐步实现。
保持良好的工作!
电脑游戏是一个无休止的循环:
这些有变化。有些游戏在每种绘制之间都有更多更新,或者可以改变它们,以使游戏在不同的机器上同样流畅。但这就是技术细节。
每秒发生50到100次之间的更新阶段(是的,经常这样):
你从哪里开始?
图形游戏的基本要求是对图形进行编程。确保您可以打开一个窗口,并在其中画一个球。
我假设您可以进行某种类的学习。参加Ball课程。它具有以下成员:x,y,deltaX,deltaY。全部为整数,以像素为单位。现在,编写此循环。
forever, do this {
start measure time (in milliseconds)
//physics part
add deltaX to x
add deltaY to y
if x is bigger than the screen width, assign -deltaX to deltaX
if y is bigger than the screen height, assign -deltaY to deltaY
if x is less than 0, assign -deltaX to deltaX
if y is less than 0, assign -deltaY to deltaY
//paint
paint the ball at x, y
stop measuring time, assign this to workTime
make the thread sleep for (25 - workTime) milliseconds
}
这将使球从窗口边界反弹。它不是游戏,而是物理模拟。如果您在球类中编写球物理更新,则很容易添加多个球。将它们存储在列表中,并为每帧更新和绘制每个图像。
您可以添加一个球拍(为其模拟物理并使其可通过鼠标或键盘控制)和游戏目标,例如阻止球到达左墙。如果游戏随时间增加了越来越多的球,难度将增加。你有游戏。
为什么要睡(25-workTime)毫秒?如果这样做,模拟将以每秒40次更新和绘制的恒定速度运行。会很顺利。如果您跳过睡眠部分,动画将变得生涩,并占用100%CPU。而且,球的速度将取决于运行球的机器的速度。现在,球的垂直速度为每秒40 *增量像素。
以您的控制台程序执行数学运算,然后在输入正确答案时使它发出一些五彩纸屑……它已经成为一种游戏(除了我之外,还有其他人在小时候玩Math Blaster吗?:)。
至于如何创建计算机来创建游戏环境,有时需要花费很多时间,但这取决于人们对周围世界的理解。游戏运用相同的数学,物理学和科学来定义自己,就像我们应用于周围世界以解释其运作方式一样。
模拟游戏是真实到虚拟的一个很好的例子。很久以前,我读过一次关于模拟游戏背后的家伙的采访,几乎所有的人,无一例外,都是从阅读一个试图解释我们周围世界的话题中诞生的,然后利用数学公式并将其置于虚拟环境中代表它。例如,《模拟城市》(SimCity)源于试图模拟经济基础。
至于如何制作3D游戏环境的细节,请在其中加入物理效果,添加一些音频,然后让用户开始与它进行交互。这就是该网站和许多其他网站的目的,并且不可能总结出更具体的答案。
最后,我将视频游戏描述为非常有限的数据集数据库。它们高度关注关系数据和高速数据访问。.我的意思是,如果每60秒渲染一帧,则根据玩家在游戏中的位置的关系,非常快地处理潜在的大量数据。到游戏跟踪的所有其他数据:)