2014-02-14 55 views
2

我正在使用Game Maker制作一些游戏,但我想用C来制作简单的游戏。我是一位新手C程序员。当我编码时,输出总是在CMD Windows控制台中。我可以做一些简单的游戏,但总是在控制台中,这不是很灵活(你不能在没有滚动的情况下进行动画制作)。当您运行更复杂的游戏时,会创建一个完整的新屏幕,并且我实际上会与该屏幕交互。我在C. Console中编写游戏或不是?

所以我使用C语言的问题是:这个新屏幕是如何加载的?我认为有一些Windows API来创建一个新的屏幕或其他东西。顺便说一句,在旧时代,我的意思是DOS时间,你只是使用了一个控制台,但你可以加载一个新的屏幕在哪里玩游戏。你怎么能做到这一点?

我想要一些指导来研究根。我只是不想调用库X或使用SDL。

感谢您的帮助。

+0

欢迎来到SO!你的问题非常广泛,有点基于意见。在SO上,你应该试着提出通常由代码示例组成的客观问题,并提出具体问题。 –

+0

尽管我对所有开始的程序员都很热心,并且正在开展扩展其功能的项目,但还是有一条线。你说你是C的新手。考虑学习该语言的基础知识:创建一个解析器,它将链接列表中的消耗文本构成。对初学者来说,这是一个具有挑战性的项目。掌握范围,内存管理和指针算术的基础知识后,即可学习使用众多API之一编写GUI应用程序。对不起,这样说:不要跑,然后才能抓取,当然也不要试图在奥运会上竞争 –

+0

@Elias Van Ootegem'这是一个非常糟糕的建议,因为你完全错过了他所要求的。如果他能在一个控制台上完成一个完整的游戏,他很熟悉C开始为他的游戏制作简单的图形窗口。他们不一定非常复杂或复杂。他们可以非常简单。他正在问如何在Windows堆栈中创建新窗口并在那里绘制他的游戏GFX。不要因为担心缺乏技能而拒绝超越自己不想做的事。作为编码员/程序员(如果你是一个人),你知道最好的学习方法就是做。不要提出不好的建议。“# – Yokai

回答

0

既然你提到了库X我假设你在Linux系统上。有几种不同的方法来存档您的目标。如果你想仍然使用控制台,但涉及更多的图形,你可以看看库ncurses(http://www.gnu.org/software/ncurses/)。

如果你想要做更先进的图形,我建议你看看这里:How do you create a window in Linux with C++?

+0

当我编写库X时,我的意思是一个通用库,如库foo。使用图书馆总是需要的吗?我认为图书馆隐藏了我想学习的复杂东西。 –

+0

所以你要求的是Windows或API的API?如果寻找窗口api,迈克尔已经回答了你的问题。 – MrSykkox

0

创建新的Windows可以得到相当多毛(即代码可以是复杂和难以阅读)。我会尝试给出一个有点高层次的概述,然后将您链接到加载基本窗口的好教程。

您需要声明几个类型HWNDWNDCLASSEX变量,并调用了一堆的Windows API函数与一些设置和诸如此类的东西来初始化窗口。

一旦做到这一点,你需要输入一个循环,处理所有的窗口交互,通常用的TranslateMessage在DispatchMessage内循环。

您还需要实施处理Windows事件的回调过程,例如鼠标点击,关闭窗口等。这通常在LRESULT CALLBACK WndProcedure中完成。

我现在已经抛出了一堆新的词语和想法,并且没有多少解释;查看本教程以获取我刚才尝试解释的完整示例。

http://www.functionx.com/win32/Lesson01c.htm

希望这有助于!

此外,这一切都假设你在Windows上根据你对Windows API(即Windows.h)的评论。如果你在Linux上,你需要使用X.

+0

但在80年代,用DOS,你可以为游戏制作一个新的屏幕。操作系统也提供了一些API? –

+0

我不在DOS附近,但我认为是的,有一个API需要。我认为你要做的是创建一个窗口,而不使用任何API,只是C.这是不能做到的;你需要编写很多程序集,因为你正在处理GPU硬件。而且,以这种方式访问​​GPU并不容易,因为它们通常不是开源的。没有规格的编程组件非常困难,很少有人能做到。我不会推荐尝试。 Windows通过提供用于创建窗口/ GUI的API而获得其名称。它意在用于这个确切的目的。 –

0

C编程可以追溯到1970年代,所以你可以考虑创建类似于那个时代的游戏。 窗口或新的屏幕是由开发人员已经编译和存储的少量预处理器指令加载的。 一个新的屏幕可通过为一些命令来实现:

#include<stdio.h> 
    #include<conio.h> 
    void main() 
    { 

    local declarations; 
    And your program for the game; 

    getch(); 
} 

这是什么基本上做的是getch()函数;存储在(conio.h)中的文件将打开一个新窗口,它将显示 输出,直到它从键盘获得一个值,即显示输出直到你按下键盘上的任何键。

希望这个答案可以帮助你。

+0

是支持图形的计算机还是操作系统? –