C++在c语言图形界面设计的小游戏

【Visual C++】游戏开发笔记之四――游戏画面绘图(一)基本图形绘制_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
【Visual C++】游戏开发笔记之四――游戏画面绘图(一)基本图形绘制
上传于||文档简介
&&【​V​i​s​u​a​l​ ​C​+​+​】​游​戏​开​发
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢如何用C++写一个简单的小游戏?
恩没错其实是这样的。我是大一的学生,这学期计算概论的课期末的大作业就是自己做一个黑白棋的游戏。由于我实在是不知道怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏。希望能知道我如果要做这么一个事要自己去学什么东西。要怎么入手?
按投票排序
我们平时玩的游戏需要图形接口在显示器上绘制3D游戏一般使用Direct3D或者OpenGL,2D游戏也有貌似有SDL、Direct2D等。一般你需要通过所在平台(比如Windows)的桌面接口创建窗口,然后用这些图形接口提供的函数去画窗口里的内容。(有一些也提供简化快速的方法,比如GLUT就有创建窗口的函数,而且是跨平台的)至于黑白棋,在命令行里一行行画字符图也可以显示,通过输入命令下棋,每一步之后刷新显示;或者用GUI库在窗口里摆放按钮,按钮上放上不同的颜色也可以了;或者用图形库去画棋盘、棋子。上述的东西都可以用C++去实现,但是具体怎么使用这些库,以及怎么实现游戏的逻辑,就得题主自己去钻研了~
首先我分析下你的问题:“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”“从我们这样一开始学C++” 这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分”其实第一个答主,这位同学说的是调用游戏引擎和图形库去开发游戏,我觉得题主还没有达到这个水平,所以我暂时不和你说一些图形库和游戏引擎。我认为你是刚入门。(如果我理解错了,请纠正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,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。我的答案,其实也就是一条路线了吧。详细术语的描述,等我下次再来改一下,码字多了,累了。希望对你有帮助。
既然是要能玩的,那至少要有个界面,有按钮,有开始、暂停、设置、声音、退出等选项,这个有很多库或方法可以实现,如QT,OPENGL等,最简单的是WIN32 SDK或者MFC。有C++基础的话去学MFC吧有了界面后就剩下逻辑了,做一个标准的游戏还是有很多专业的术语(技术)的,如帧、脚本等,涉及的技术很多很多,这个要学起来不容易,最好是去公司边做边学。但是,要做一个像俄罗斯方块、贪吃蛇什么的,还是很easy的,用一个定时器就全部搞定。等学了界面开发,随便搜一下教程都一大堆
想当年文计几乎没什么基础去学了JS,前面觉得写写html也就算了。后来作业竟然是做个五子棋的游戏,都不知道后来怎么过来的。1您所在的位置: &
C++ 很有趣:编写一个井字游戏 (Tic Tac Toe)(1)
C++ 很有趣:编写一个井字游戏 (Tic Tac Toe)(1)
开源中国编译
这篇文章,以及整个系列都是针对那些想学习C++或者对这个语言性能好奇的开发者。
这个有趣的C++系列打算展示一下使用C++写代码可以和其他主流语言一样高效而有趣。在第二部分,我将向你展示使用C++从无到有的创建一个井字游戏。这篇文章,以及整个系列都是针对那些想学习C++或者对这个语言性能好奇的开发者。
许多年轻人想学习编程来写游戏。C++是用的最多的用来写游戏的语言,尽管在写出下个愤怒的小鸟之前,需要学会很多的编程经验。一个井子游戏是开始学习的 一个好选择,事实上,在许多年前我开始学习C++后,他是我写的地一个游戏。我希望这篇文章可以帮助到那些还不熟悉C++的初学者和有经验的开发者。
我使用的是Visual Studio 2012来写这篇文章的源代码。
如果你没有玩过井字游戏或者并不熟悉这个游戏,下面是来自维基百科的描述.
& 井字游戏 (或者&圈圈和叉叉&,Xs and Os) 是一个两人的纸笔游戏,两个人轮流在3X3的网格内画圈和叉. 当一名玩家放置的标志在水平,垂直或者对角线上成一条线即获得胜利.
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="486" height="296" alt="" src="/wyfs01/M02/3D/0B/wKioJlKqYkOg8w35AAC5ydtgqvQ737.jpg" />
这个游戏也可以人机对战,先手不固定.
创建这个程序的时候有2个关键的东西:程序的逻辑和程序的UI界面. 有许多在windows中创建用户UI的方法, 包括 Win32
API, MFC, ATL, GDI+, DirectX, etc. 在这篇文章中,我将展示使用多种技术来实现同一个程序逻辑.
我们将新建2个应用, 一个使用 Win32 API 另一个使用 C++/CX.
如果一个玩家在网格上放下一个标记时,遵循几个简单的规则,那他就可以玩一个完美的游戏(意味着赢或者平局)。在Wikipedia上写有这些规则,在里面你也可以找到先手玩家的最优策略。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="/wyfs01/M02/3D/0D/wKioOVKqYkCx7K-lAABdiDkR-Is071.jpg" alt="" />
在xkcd drawing上 有先手和后手玩家的最优策略。尽管有几个错误(在几种情况下没有走必胜的步骤,至少在一个情况下丢失了一个X标记),我将使用这个版本作为游戏策略(修复 了那些我能找到的错误)。记住电脑总是玩一个完美的游戏。如果你实现了这样一个游戏,你可能也想让用户赢,这种情况下你需要一个不同的方法。当对本文的目 的,这个策略应该足够了。
提出的第一个问题是在C++程序中用什么数据结构来表示图像的模型。这可以有不同的选择,比如树、图、数组或者位字段(如果真有人对内存消耗很在意)。网 格有9个单元,我选择的最简单的使用对每个单元使用一个包含9个整数的数组:0表示空的单元,1表示单元被标记为X,2表示单元被标记为O。让我们看下图 以及它将被如何编码。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="/wyfs01/M02/3D/0B/wKioJlKqYkOjcoacAABlveS5qWg601.jpg" alt="" />
这幅图可以这么理解:
在单元(0,0)放X。网格可以编码为:1,0,0,0,0,0,0,0,0
如果对手在单元(0,1)放置O,那么在单元(1,1)放置X。现在网格编码为:1,2,0,0,1,0,0,0,0
如果对手在单元(0,2)放置O,那么在单元(2,2)放置X。现在网格编码为:1,2,2,0,1,0,0,0,1
如果对手在单元(2,2)放置O,那么在单元(2,0)放置X。现在网格编码为:1,2,0,0,1,0,1,0,2。这时,无论对手怎么做,X都将赢得比赛。
如果对手在单元(0,2)放置O,那么在单元(1,0)放置X。现在网格编码为:1,2,2,1,1,0,1,0,2。这表示的是一个赢得比赛的一步。
记住这个我们就可以开始在程序中对其编码了。我们将使用一个std::array来表示一个9格板。这是个固定大小的容器,在编译时就已知的大小,在连续的内存区域存储元素。为了避免一遍又一遍的使用相同数组类型,我将定义一个别名来简化。
#include&&&typedef&std::array,&9&tictactoe_&
上面描述的最优策略用这样的数组队列(另一个数组)来表示。
tictactoe_status&const&strategy_x[]&=&&{&&&&{1,0,0,0,0,0,0,0,0},&&&&{1,2,0,0,1,0,0,0,0},&&&&{1,2,2,0,1,0,0,0,1},&&&&{1,2,0,2,1,0,0,0,1},&&&&//&...&};&&tictactoe_status&const&strategy_o[]&=&&{&&&&{2,0,0,0,1,0,0,0,0},&&&&{2,2,1,0,1,0,0,0,0},&&&&{2,2,1,2,1,0,1,0,0},&&&&{2,2,1,0,1,2,1,0,0},&&&&//&...&};&
内容导航&第 1 页: &第 2 页: &第 3 页: &第 4 页: &第 5 页: &第 6 页: &第 7 页: &第 8 页:
关于&&的更多文章
本书包括了50多个不同的教程(其中还包括了一些完整的游戏框架),
网友评论TOP5
HTML5领域,高空喊话的不在少数,很多人就感觉像是在上演狼来了...
讲师: 0人学习过讲师: 31人学习过讲师: 58人学习过
《待字闺中:编程面试题集》集合最新最全的面试经验和
这周Windows8.1正式版发布了,不知道各位有没有去更新
十一长假归来上班,好像更累了;早上也越来越堵了。小
本书全面深入地介绍了在网络的日常管理中,网络管理员必须掌握的知识,包括系统基本管理、性能调优、故障恢复、域控制器管理、存
51CTO旗下网站恩没错其实是这样的。我是大一的学生,这学期计算概论的课期末的大作业就是自己做一个黑白棋的游戏。由于我实在是不知道怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏。希望能知道我如果要做这么一个事要自己去学什么东西。要怎么入手?
首先我分析下你的问题:“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”“从我们这样一开始学C++” 这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分”其实第一个答主,这位同学说的是调用游戏引擎和图形库去开发游戏,我觉得题主还没有达到这个水平,所以我暂时不和你说一些图形库和游戏引擎。我认为你是刚入门。(如果我理解错了,请纠正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,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。我的答案,其实也就是一条路线了吧。详细术语的描述,等我下次再来改一下,码字多了,累了。希望对你有帮助。
立志做一流的码农,二流的吉他手,三流的文艺青年,四流..哦啦}

我要回帖

更多关于 c语言图形界面编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信