C++关于制作游戏,算法对游戏真的有用嘛!~~o(>_<)o ~~

咳咳,本人是一只资深宅男,13岁,才学编程4年。
好吧本人接触的编程也很多:比如C++、e语言、java、pascal……
不过最近在学校里的竞赛学的都是C++。
可是最近哥才听到一条消息:竞赛老师是肯定不会教如何制作游戏的。
哥傻了,哥知道制作游戏很难(我这点都不知道提什么问题!!),但是你说教都不教,哥怎么学得会的呢?
好吧你说是为了学习着想,可哥刚开始的来头就是要制作游戏!
恩恩,现在突然爆出这样一个冷门,哥学C有屁用。
算法学来干什么?竞赛?竞你妹纸。考高中神马的哥还需要你个弱弱的计算机来加分?!
(况且现在哥根本看不太懂算法……)
好吧请大家告诉我撒:
算法(比如递归、回溯神马的……)对制作游戏有作用吗?
哥还需要继续在老师那儿学吗?
再附带一个C++制作游戏的简易教程!Thanks son~~~~
好吧,我知道我还年轻,我的确很轻狂,我的确很嚣张。
但谢谢各位来解答我问题的人,对于之前的某某……(话说你为什么要陌名……)我表示道歉,是我语气太激烈了。
不过我知道你们都是为了我好。
感谢你们的支持与提醒。
我相信我会在以后越走越远,里面肯定有你们的一份帮助。
谢谢~!

资深大魔法师告诉你,制作3D甚至2D游戏的主要工作都不是程序,你学C++什么的是没用的,报个素描班吧。游戏的主体是美工、音乐、剧本。然后这些都有了,从名牌大学研究生院找个图形图像的毕业生当主工程师,然后职业学校找码农,这就算完了。
另外,您还是学学英语吧,“Thanks son”这样就别出来丢人了。
看了您的补充,我才感觉到我擦嘞,你Y语文几分啊,汉语看不懂?撒,来跟我读 sa。
我学了C++ 8年,我都不敢说我理解了C++。虽然我之前没说C++不好学,但是实际上确实是不好学,还说您学了好多年,那我就问你一句:C++的模板偏特化是什么?不知道是吧,那简单点的,C++的模板在何时被展开?什么事cv-qualifier?explicit关键字是干啥的?应用范围是什么地方?还是不知道?那我问你C++第一个发布版叫什么,C++的前身叫什么?
图形图像的专业算法是研究生专业课程,估计你还得10年之后才能见到吧,不过之前你得过了线性代数和高等数学才行,完爆你几条街,不信你试试。
搞ACM的立马来拜,为了祖国的未来,这小英雄就交给你们了,扇的时候下手轻点。
原来您是要做贪吃蛇啊。。。
大神在上,恕小的愚昧无知。我真不该来啊,瞎了小的的钛合金狗眼居然点进来。小的跟您陪不是了,您大人不计小人过,就放过我吧!追问

前身……?C++前身是C啊。C的前身是B啊。(这点我还是知道的。喂喂~不要说这么多难懂的东西啊喂!)
好吧我的确有点过激了,抱起啊抱歉~(最近不知道么了,反正就特容易发火……)
呃,还有我不只要做贪吃蛇的说……

不如网上的很多网游都是我后期的努力目标(当当当当!)
恩恩,你也很好了,没有骂我,我也很高兴的。
不介意的话,我们加个好友吧!834439689

追答

C++的前身是C wtih Class ,而C with class的前身是多种语言包括Algol68和simula以及C等,参见《C++语言的设计与演化》。
一个游戏的灵魂是策划,脸面是美术,内涵是剧本。这是在说单机,网游有所不同,内涵是游戏设计图队。当然一切围绕的是策划。最没技术含量的是程序设计,但是最苦的也是程序员……
你自己看所有游戏的采访和特典:没出现过任何的程序员。
C++本身来说很难,但毕竟是语言,是一种工具罢了。想做中型甚至以上的游戏都需要大量的专业知识,所以你现在急也没用,连浮点运算你都没学过,何必为难自己呢。一般游戏不是小游戏或者字符游戏、8bit游戏都需要图形图像等的配合,你要知道没有足够赏心悦目的界面,这游戏就是一渣渣。
还有别说算法你看不懂,你那数学、语文、英语都不足以应付游戏开发这件事,当然贪吃蛇什么的当我没说,那东西拿浏览器+javascript都能做……不需要智商的东西,何必让自己烦心呢。
大学以前的计算机竞赛都是玩的……这不是我说的,这是某知名ACM教练说的。

所以熊孩子不要只打魔兽争霸,有空多看看名家名著,道德教育等书籍,气质和修养是一个程序员逆袭的唯一机会。还有你首先要培养的就是道德和法律修养,礼貌以及礼仪,当务之急啊。之后是判断力,如果没有能判断是非和发展方向的能力赶紧找大腿抱。最后不要相信那个给你模板元编程代码的,那段代码本身就是错误的……而且元编程(数值和类型计算)和游戏半点关系都没有,引擎需要数值运算可惜不用你写,类型是RTTI,vs都是默认禁用这个特性的,一般公司不允许C++程序员使用模板的,影响效率且获得的收益太小。
不作死就不会死,你这行文习惯和自称以及语气以后还是改改吧,真的,保护自己要紧,这年头动不动就操刀的室友可是很多的,尤其你这语气明显地是要别人给你跪下添鞋啊。

追问

嗯,谢谢。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-22
少年英雄啊。英雄 首先问一下 您接触编程但看不懂算法,那您懂算法吗?我知道看别人的代码是很痛苦的,所以如果只是看不懂不要紧。
看您不是做小游戏的意思(我指用CUI就可以做的),如果您对常用算法基本知晓,并且对win32编程有一些了解,那么可以看一看directX或者OpenGL,选一种就好。这是两种常用的游戏开发SDK。(基本上现在的PC游戏在安装时都会附带按DirectX和C++库)
所以我认为去买一本介绍上述两种工具之一的书就可以了。
关于竞赛,个人感觉那个相比较而言更偏数学一点,如果您感觉自己逻辑思维能力较好用不着拿那些来折腾自己的话,完全可以不用学。
至于具体算法跟游戏制作的关系:学编程的基础是语法,但是想自己写实用的程序,没有数据结构和算法这两个基础是不行的,就好象你字写的好,素材选的好,但是不会组织语言不会文章架构,也是写不出好文章的。追问

小游戏……?(好吧我不得不说是看到比自己高一届的同学做我就突发奇想的……话说贪吃蛇算不算小游戏……?= =)
不过……好像我看易语言写游戏的人都不用算法的吧?
似乎他们想到怎么做就怎么做的那种诶。
一定需要算法吗?
(话说魔兽、CF那种的连线游戏我会告诉你我根本没兴趣吗?哇哈哈……)

追答

很抱歉没有学过易语言,也不了解易语言的强大之处。
我还是用写作打比方吧:想到什么就写什么,这当然可以写成小说放到网上,也许有人看,但是绝不会成为好的作品。最好的作品一定是提前有构思,有伏笔,有呼应,故事一开始的世界设定都是与后面的情节展开紧密联系。很显然,只是“想到什么写什么”是做不到这些的。
所以看英雄您一定不会做那种自己都不想玩的游戏吧,所以想做好的话,算法还是要学的啊~

追问

好吧……(为毛你跟我计算机老师说的一样……= =)
嗯,那算法一般要学那些呐?
你看你觉得递归、回溯、动态规划神马的应用得到游戏上嘛?
还有还有,游戏我知道肯定是要优化!但但但但……需要优化的这么复杂嘛?
到点不就行了嘛?
还有,我知道C++很强大。
恩恩……
哪里强大了?
我个人觉得VB倒是比它强大多了呢……

追答

这么说吧,凡是你现在能说上来的这些个算法都是经典而常用的。建议都学一学,了解其中的精神。还有数据结构要学一下,比如队列和栈,树和图。
C++也许不够强大(相比其他的一些语言),但是VB实在不能与之相比。我承认的是VB的友好易学和编写GUI的快速是超过C++的,但是,这付出的就是可用功能减少的代价。还是打比方,C++把每一个字都摆在你面前,你可以随意组合文章,刚开始会慢一些,但是你可以任意发挥出自己的特色;VB把一些现成的句式和段落给你,你只需要简单组装,很快,但是你的自由度降低了,而且,你能写出来的人家用字也能写出来,你不比人家多一些什么本事。我们一般讲“功能强大"的时候,都是指其功能灵活性和全面性的。从这两个意义上,VB都比不上C++。

追问

那好吧,最后问一个问题(也只能最后问一个问题了……我可是很贪婪的。T_T度娘你怎么能这样……)
这里说的灵活性是指所受限度吗?但是这样复杂度岂不是也增加了吗?
不过灵活性的增加,也意味着能更改的东西就更多了,是这样吧?
那就是说,什么远程修改、控制什么的、制作木马病毒之类的都可以用C实现?
这岂不是太可怕了……

1

追答

没错。灵活度增加就是意味着对初学者的难度增大,我学的第一门语言就是VB,不敢学C。。;但是这也就意味这学通了之后你可以做的事情就多,因此我后来再没用过VB。。
少侠认为windows是用什么语言开发的呢~?就是C。C是C++的前身,C++包含C的全部功能,除此之外还加上了面向对象的特性。编写底层的漏洞利用都是用C的。虽然我最近听说中国的好多有害程序是有易语言写的,以我的水平确实不能理解。。

本回答被提问者采纳
第2个回答  2013-08-22
关于这个问题......我想问你一下,程序=数据结构+算法 (Pascal之父、结构化程序设计的先驱Niklaus Wirth之言)这句话你知道吗,此乃所有程序员的箴言。
首先,我可以告诉你,没有算法的游戏不是好游戏。知道《孢子》吗,他模拟了整个银河,如果没有算法,完全手编,那程序得有多长?它其实是用了递归算法,不停地带入不同的值来获得不同的结果,来模拟宇宙的。这即是算法的魅力。
其次,我可以告诉你,竞赛是培养你的逻辑思维能力的。基础打好了,之后才能写出好程序。否则,你的程序毫无逻辑可言,不光别人看不懂,估计你自己都够呛。
最后,你提到的动态规划,回溯等无用,其实是不完全对的。比如你编的是下棋游戏,那么就得用回溯(你应该知道计算机很傻的),至于DP的用处,你自己慢慢体会吧......
题外话:年轻人,就要敢于质疑,但得有礼貌哟~你后面的语气就很不礼貌撒~
第3个回答  2013-08-22
13岁肯好好学的话前途无量啊。

你学那些东西 是学语言最基本的,

做游戏至少少需要懂的东西如下
1 精通一门语言
2 常用数据结构和算法 (数组 链表 树 图 队列 堆栈 对这些数据结构的 增删改查排序)
1 和2 是任何开发里都会要用到的东西
3 图形图像的常用算法 (包括这些算法的基础 线性代数 和 解析几何 特别是3D游戏,不会这个就和没手没脚一样)
4 网络通信(如果想做网络游戏的话)
5 一套可用作游戏开发的开发库(比如 OPENGL DIRECTX 或者一些游戏引擎 HGE IRRLICHT 之类的)

除了基础必须要自己学意外,其他的工具库网上有很多

编程这东西不是教出来的,都是自学出来的。

比如递归, 对树的数据结构的操作就全是递归的,当然为了提高效率还需要把递归改成非递归的
你现在的情况,就老老实实先把语言学会。C++ 没你想得那么简单。
另外没有做游戏的简易教程,如果你只是想做着玩,体验一下的,可以用游戏工厂之类的软件或者魔兽争霸的编辑器。
如果你觉得自己C++语言已经学得差不多了,下面附一段求常量阶乘的代码,用的是递归,
接触到这样的代码后,我开始使用模板元编程的,这段程序最大的好处是运算时间为0

template<int N>
struct fact
{
enum
{
value = N * fact<N-1>
};
};

template<>
struct fact<1>
{
enum
{
value = 1
};
};

template<>
struct fact<0>
{
enum
{
value = 0
};
};

std::cout << (fact<5>::value) << std::endl //求5的阶乘

所以不管你做什么基础是很重要的,
建议的学习流程 C++ ->数据结构-> STL -> WINDOWS 或者 LINUX 的基础图形编程->boost::asio(网络) boost::gil(图像)
->directX 或者 OPENGL, 以及线性代数和解析几何 ->游戏引擎使用
当然以你的情况来说,最好先把大学计算机系的课程全都学一遍
包括
数据结构 (所有开发相关)
高等数学 (所有开发相关)
离散数学(所有开发相关)
线性代数(游戏开发相关)
解析几何(游戏开发相关)
操作系统原理 (至少要了解)
数据库概论(网络游戏相关)
编译原理 (游戏开发相关,本来是编译器如何开发的,但是很多算法游戏开发里用的到)
计算机组成原理(至少要了解)
计算机体系结构(至少要了解)
计算机网络通信(网络游戏开发相关)

计算机图形学(游戏开发相关)
多媒体处理(游戏开发相关)
软件工程(所有开发相关,至少要先做到了解)

最后建议你测下IQ 如果低于120的话建议转行吧追问

智商泥煤……(原来你这人是靠智商评价人的!你你你……)那真的准确吗……我第一次测才一百三十几诶……呜呜……
好了不提伤心事了……话说程序开头不是“include ”吗?(原谅我的无知,我知道各组库是不一样的honghong……)
还有——那啥大学系的课程哥一定要学嘛?那哥负担岂不是又加重了……T_T
恩对了,马上要全国联赛了诶……你说哥还要不要继续学下去啊?

追答

又没让你一天学完 IQ130多不错了

说白了做游戏编程就是玩数学 IQ不够能行吗
你百度 HI 上加我下 发段代码给你,相信你很快就会明白

第4个回答  2017-11-11
我擦,咋和我这么像呢,我今年14岁= =,学了一年(好吧,我们开始自报家底,反正被打击无数次,免疫力强了,快来打击我吧,各位大神)会C#\JAVA\易语言\R语言\U3D,第二年(也就是现在)正在学习算法,但是因为学历(才初二)学的知识太不广泛(也就是数学知识)
函数都还没有学呢.....(真扯淡)
算法设计涉及到多少的数学知识........
我多么羡慕你啊,如果我在9岁就自学编程,现在嘿嘿.......
我浪费了6年的时间放在了玩游戏与消遣上.........
但是本大爷觉醒了,开始专研计算机= =
_______________________________________________________________________________________
好吧,回归正途...不瞎扯淡了
C++的确很强大,游戏里面的霸主啊,加个GL更厉害了
但是算法必须要学的,如果想要学习制作游戏,必须想要算法的,贪吃蛇?(你可能会,也可能自己写过,也可能玩过)那个游戏思路:
循环里面放上、下、左、右、的代码(也就是画图形的函数,画直线,xy移动)
然后食物随机,判断,如果 食物xy = 蛇xy 则 食物消,分加,判断,分多少,是否符合特定要求的规定,也就是蛇变大的与否
最后: 判断 蛇的xy 是否也边界重合(即:边界xy)
这种小游戏,制作出了,你能挣多少钱?
再说:俄罗斯方块 思路
在一个xy矩阵,xn yn 初始化 为0(0=无方块,1=有方块)
创建多个xy的矩阵,代表着下落方块的格式...................不说了.....语言组织不起来了,太抽了,我都抽筋了
这个算法稍微需要那么一点点的算法(啥算法?递推)
____________________________________________________________________________________________
也许你觉得以上你都会,(再无任何帮助下)
那么恭喜你:你游戏就差那么一点点就入门了
你也可以找我,来打击我,那么你可以回复我,找我要QQ号,然后你就可以来打击我了
如果可以的话,你可以用算法来打击我,或许我可以学习点什么。
————————————————————————————————
相似回答