如何用C++写一个简单的小游戏?

作者:JustForFun
链接:http://www.zhihu.com/question/22108858/answer/51858521
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

首先我分析下你的问题:
“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”

“从我们这样一开始学C++” 
这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分”
其实第一个答主,
Clones
这位同学说的是调用游戏引擎和图形库去开发游戏,我觉得题主还没有达到这个水平,所以我暂时不和你说一些图形库和游戏引擎。
我认为你是刚入门。(如果我理解错了,请纠正O(∩_∩)O哈!)

“能做一个像平时玩的一个简单的游戏”
我不知道咯租户对于这个“简单的游戏”是怎么定义的?

1.
黑窗口的贪吃蛇你玩过没?
(你懂黑窗口吧,就是cmd菜单,就是你第一次输入”hello world”那个黑黑的窗口,学术名:控制台程序)
听懂了吗?

2.
或者说,你所谓“简单游戏”,是电脑上的“拳皇“,”合金弹头“,这些单机,
或者一些更炫的桌游或者,现在很流行的撸啊撸这类网游。

3.
或者说,你想要的是安卓手机上,社么”2048“ “天天酷跑 ” “3D飙车”


这三类都是游戏,所谓”简单”,我觉得不好理解。
我建议楼主以后问问题的时候,可以打个比方,举个详细的例子,否则他人无法理解,你到底想要什么?


言归正传,我上面标记为1的是楼主必须要会的,就是你如果想做2,3,这种类型的游戏,第一步
1代表的控制台程序必须要会。

这些游戏,比如 “贪吃蛇” ”俄罗斯方块“ ”飞行器“
这类控制台的游戏,虽然无趣,但是如果你想做一些看起来很炫很艳丽的2,3类游戏,相信我,你控制台这关,最好是认真做完。
这类游戏,你可以去图书馆借一本 ”C语言课程设计”
这本书真的认认真真学完,敲出每一行代码,你的面向过程编程能力,基本可以放心了。
有什么代码细节搞不定,上 CSDN, 博客园,overflow 去问,去发帖问。
问百度。
翻墙问谷歌。
但如果是架构上的问题,问老师吧或者一些 “真的很” 牛逼的学长。

不要急躁,打基础这一步,千万不要跳
完成这一步,第1类游戏相信,对你来说不在话下,更重要的是,你的C语言功底绝对会有一个很大提升。


第二,当你第一步完成了,1类游戏搞定了,那我就可以告诉你,第二类游戏,会接触4个概念:面向对象编程OOP,游戏引擎,可视化编程,GUI(图形界面)
这个时候C++的确可以做,一些简单的带图形的游戏。

至于用了啥技术,你把我说的下面这本书看一下,就都知道了,码字好累。。。

比如,你能力够,完全可以把 合金弹头 那种游戏,或者 手机上 天天酷跑 这些游戏移植到windows上来,只是你至少要去图书馆借一本书:

当初我倒是做过一个 坦克大战的windows版。可惜源码已不知所踪。
你可以百度试试有没有写好的源码。

这本书当时我是下的pdf版,如果嫌弃太老了,你去图书馆借一本和这本书类似的吧,推荐我就不了,其实我也就完整看了这一本,我觉得对于初学者,够了。

至于第3类,那是安卓程序,所以,你至少需要再学一门java,它不是C++能搞定的,
然后再百度 “安卓开发入门”
然后再百度安卓游戏开发

之后,等你搞清楚什么是安卓开发的,搞定java基础,对OOP有一点实战经验,
而且决心做安卓,再去做 社么 “天天酷跑”子类的游戏吧、


我也不是专业做游戏的,也就大一做过一段时间,玩过MFC,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。

希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。

学东西一定要踏实,稳扎稳打。
学东西一定要踏实,稳扎稳打。

学东西一定要踏实,稳扎稳打。

我的答案,其实也就是一条路线了吧。
详细术语的描述,等我下次再来改一下,码字多了,累了。

希望对你有帮助。

  • 22
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
BODY { BACKGROUND-COLOR: white; FONT-FAMILY: "Verdana", sans-serif; FONT-SIZE: 100%; MARGIN-LEFT: 0px; MARGIN-TOP: 0px } P { FONT-FAMILY: "Verdana", sans-serif; FONT-SIZE: 70%; LINE-HEIGHT: 12pt; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 10px; MARGIN-TOP: 10px } .note { BACKGROUND-COLOR: #ffffff; COLOR: #336699; FONT-FAMILY: "Verdana", sans-serif; FONT-SIZE: 100%; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 0px; MARGIN-TOP: 0px; PADDING-RIGHT: 10px } .infotable { BACKGROUND-COLOR: #f0f0e0; BORDER-BOTTOM: #ffffff 0px solid; BORDER-COLLAPSE: collapse; BORDER-LEFT: #ffffff 0px solid; BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 70%; MARGIN-LEFT: 10px } .issuetable { BACKGROUND-COLOR: #ffffe8; BORDER-COLLAPSE: collapse; COLOR: #000000; FONT-SIZE: 100%; MARGIN-BOTTOM: 10px; MARGIN-LEFT: 13px; MARGIN-TOP: 0px } .issuetitle { BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #dcdcdc 1px solid; BORDER-TOP: #dcdcdc 1px; COLOR: #003366; FONT-WEIGHT: normal } .header { BACKGROUND-COLOR: #cecf9c; BORDER-BOTTOM: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; COLOR: #000000; FONT-WEIGHT: bold } .issuehdr { BACKGROUND-COLOR: #E0EBF5; BORDER-BOTTOM: #dcdcdc 1px solid; BORDER-TOP: #dcdcdc 1px solid; COLOR: #000000; FONT-WEIGHT: normal } .issuenone { BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-RIGHT: 0px; BORDER-TOP: 0px; COLOR: #000000; FONT-WEIGHT: normal } .content { BACKGROUND-COLOR: #e7e7ce; BORDER-BOTTOM: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 3px } .issuecontent { BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #dcdcdc 1px solid; BORDER-TOP: #dcdcdc 1px solid; PADDING-LEFT: 3px } A:link { COLOR: #cc6633; TEXT-DECORATION: underline } A:visited { COLOR: #cc6633; } A:active { COLOR: #cc6633; } A:hover { COLOR: #cc3300; TEXT-DECORATION: underline } H1 { BACKGROUND-COLOR: #003366; BORDER-BOTTOM: #336699 6px solid; COLOR: #ffffff; FONT-SIZE: 130%; FONT-WEIGHT: normal; MARGIN: 0em 0em 0em -20px; PADDING-BOTTOM: 8px; PADDING-LEFT: 30px; PADDING-TOP: 16px } H2 { COLOR: #000000; FONT-SIZE: 80%; FONT-WEIGHT: bold; MARGIN-BOTTOM: 3px; MARGIN-LEFT: 10px; MARGIN-TOP: 20px; PADDING-LEFT: 0px } H3 { COLOR: #000000; FONT-SIZE: 80%; FONT-WEIGHT: bold; MARGIN-BOTTOM: -5px; MARGIN-LEFT: 10px; MARGIN-TOP: 20px } H4 { COLOR: #000000; FONT-SIZE: 70%; FONT-WEIGHT: bold; MARGIN-BOTTOM: 0px; MARGIN-TOP: 15px; PADDING-BOTTOM: 0px } UL { COLOR: #000000; FONT-SIZE: 70%; LIST-STYLE: square; MARGIN-BOTTOM: 0pt; MARGIN-TOP: 0pt } OL { COLOR: #000000; FONT-SIZE: 70%; LIST-STYLE: square; MARGIN-BOTTOM: 0pt; MARGIN-TOP: 0pt } LI { LIST-STYLE: square; MARGIN-LEFT: 0px } .expandable { CURSOR: hand } .expanded { color: black } .collapsed { DISPLAY: none } .foot { BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #cecf9c 1px solid; BORDER-TOP: #cecf9c 2px solid } .settings { MARGIN-LEFT: 25PX; } .help { TEXT-ALIGN: right; margin-right: 10px; }
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值