精华内容
下载资源
问答
  • 个人游戏程序开发总结

    千次阅读 2019-02-19 02:15:16
    个人游戏程序开发总结个人背景游戏行业的个人分析1年培训总结第一份工作总结第二份工作总结 个人背景 从一所2本大学毕业后,同多年好友(软件开发者)交流和商量,最终选择以游戏行业作为工作目标.由于身边没有游戏行业...

    个人背景

    从一所2本大学毕业后,同多年好友(软件开发者)交流和商量,最终选择以游戏行业作为工作目标.由于身边没有游戏行业的人际关系,而自己大学专业是材料物理,在校只学过c语言,综合考虑后,最后选择进入了培训学校.学习了一年的c++游戏开发,之后开始正式踏入游戏行业的道路.

    游戏行业的个人分析

    游戏行业就个人所感,国内的游戏行业不是一个成熟的行业,真正做到成熟而且正规的只有网易和腾讯两大巨头,其他很多公司都是还在泥泞中探索或者还在寻找生路,我大体进行了一些总结:

    1. 国内网络游戏始终处于一个靠着复制和微创新的模式,在高利润的金钱堆中缓慢的爬行着;
    2. 国内经济的快速发展促使国内单机游戏市场全面复苏;
    3. 手机游戏逐渐在霸占PC游戏的份额,从最近暴雪事件就可以看出来;
    4. 国内大多数中小游戏公司,在腾讯和网易的挤压下苟延残喘;同时新生代也在踊跃进入这个有趣且还有很多发展机会的行业;
    5. 国内游戏行业的发展,仍需要一大批优秀策划和艺术行业人才的支持;
    6. 行业利润谋取方式大概三种:广告收入(小游戏),付费购买,游戏内购;
    7. 游戏行业是一个超高风险同时伴随超高回报的行业;从几十万到上千万资金血本无归,一旦大成功,必然也是几倍至几十倍的利润;这是很多其他行业很难做到的.

    1年培训总结

    游戏行业是一个有较高门槛的行业,国内大多数进入游戏行业最好的途径就是有师父带进门;其次,就是软件行业毕业的高材生自身进入游戏公司实习;最次,就是培训和自学进入游戏行业.

    本人就是最次等.

    当然当你能有幸进入游戏行业,你就会发现,大多数都是通过最次等进入游戏行业.我这一年的培训,我深深地体会到找工作时,培训所学的一年的东西,全是基础,根本不能靠培训所学的东西进入游戏行业.而我在培训时,自学了很多数据结构及算法等其他知识;最终才有幸找到一份让我痛不欲生的工作.

    对于新人的建议:
    if(有较强学习能力和自制力的人)
    {我建议自学};
    else if(有较强学习能力的人&&自制力较差&&但家里有矿的人)
    {可以选择培训(根据课程大约1.5-3万)};
    else
    {其他的更差的,换行业吧,这不适合你(死谏)};

    第一份工作总结

    上面已经提到过一点了,一份痛不欲生的工作;

    项目 体育类3D对战网络游戏
    痛点 1 996及以上
    好处 1 团队比较团结,一群好同事
    痛点 2 头发掉了一堆
    好处 2 头发掉了但还是那么帅
    痛点 3 加班加进医院,肾结石,水喝少了,公司饭太咸了
    好处 3 不再拼命工作了,开始忙里偷闲;改变观念以身体为主;
    痛点 4 写了一年的逻辑,知识面不全
    好处 4 代码框架和习惯养成较好
    痛点 5 项目死了
    好处 5 终于解脱了
    痛点 6 调岗,但没提不涨工资
    好处 6 要求涨工资,不给,离职;公司那么多,到处去看看
    痛点 7 这一段时间都没有好好陪过女朋友,到现在都分手了
    好处 7 开始改变爱情观,另一半和事业都重要;如果只能选择一个,我选择两个都要(不懂的别问);

    第二份工作

    在一段休息后,我开始了找第二份工作,给大家提醒一下,尽量不要随便离职才找工作,在职找工作和离职找工作时不同的两个境地(除开你牛上天(像当年某某面试中直接黑了某公司一样));
    在面临选择手机网游大公司(996)和单机小游戏公司(965)时,我最终选择了薪资较低的单机游戏公司,其原因:一是没接触过单机游戏公司,其二这家小公司有一款上了排行榜的手机游戏,我刚好看到过,所以相信缘分最终进入了这家公司;

    总结

    到目前为止已经工作快两年了,但我很清楚我还有很长的路要走,有很多需要继续学习的地方;宝剑锋从磨砺出,梅花香自苦寒来.
    接下来的目标:

    1. c#深入学习
    2. 设计模式
    3. 数据结构及算法
    4. 线性代数
    5. 网络编程学习
    6. 自制一款单机游戏
    7. python入门
    8. shader入门
    9. 游戏开发百科总结
    10. 人工智能
    展开全文
  • 数独游戏程序

    万次阅读 热门讨论 2007-08-23 11:02:00
    数独简介: 数独是一个智力小游戏。一个9*9的棋盘,共有9行9列以及9个互不相交的3*3九宫格。...我下载了一些网上的数独游戏程序,玩起来觉得不是很舒服,所以决定自己开发一个。 现游戏具有的功能: ...

    数独简介:
        数独是一个智力小游戏。一个9*9的棋盘,共有9行9列以及9个互不相交的3*3九宫格。里面某些格子开始已经填上了1-9中的一些数字。要求玩家在余下的空格中填上1-9中数字,使得每行,每列和每个3*3九宫格中都正好包含1-9数字各一个。数独游戏保证结果的存在和唯一性。
    例子:
     

    我下载了一些网上的数独游戏程序,玩起来觉得不是很舒服,所以决定自己开发一个。
    现游戏具有的功能:
      i)  随机产生任意多的游戏(理论上可以产生2^96=79228162514264337593543950336个不同的游戏)
      ii) 游戏分成四个不同级别(入门级,高级,专家级,骨灰级)
      iii) 通过模拟人工解数独问题提供人性化的提示,几乎所有游戏都完全可以仅用提示解决
    iv)提供尝试功能(使用Shift键加数字键或鼠标左键)
     v)可以用户自定义游戏,用户可以直接输入或者通过剪切板复制游戏
      vi)可以将计算机模拟人工求解过程复制到剪切板(Ctrl+U键),会使用人工推理方法:唯一数隐含唯一数数对隐含数对唯一矩形法三链数隐含三链数四链数隐含四链数区域删减法, 矩形法(X-WING, SwordFish, JellyFish),关连数删减法(Forcing Chain)等

      vii)语音提示功能(M键切换语音功能)
     viii)历史记录图形化回放功能
     ix) 最新2.4版添加了语音命令功能

    最新下载链接(932K)(2.4.1版):

       下载地址1:      无限数独2.41版安装程序  (932K,添加语音命令功能)

      下载地址2:   http://download.csdn.net/source/273047 (仅CSDN用户可用)


    游戏说明:

    1.玩游戏过程:
     
      
    如上图,在游戏中还没有填充的格子中,在候选数显示模式,计算机会自动显示所有的候选数。其中黑色大数字是游戏事先设置好的数字,蓝色大数字是玩家填充的数字,黑色小数字是每个格子的候选数。但是在非候选数模式,计算机不会显示候选数。
    用户可以使用鼠标或键盘玩游戏。用鼠标左键点击一个候选数(仅用于候选数显示模式)或鼠标在格子上时按数字键选择一个数1-9。用鼠标右键或同时按住Ctrl和数字键来减少或添加候选数(仅用于候选数显示模式)。按H或Ctrl+H获得提示。

    显示部分候选数功能:仅提供键盘操作。按住Ctrl+Shift+数字键1-9分别只显示候选数1到9。Ctrl+Shift+0显示所有候选数。而在显示部分候选数时,也可以通过左右键改变当前显示的候选数。
     

    游戏还提供无限制步数的取消和重做功能,任何时候可以通过菜单项"编辑/取消”或热键Ctrl+Z取消上一步操作。对于取消后的步骤可以通过Ctrl+Y键重做。 批量取消功能:通过用鼠标右键点击一个用户已经设置好的数据,这将取消这个格子里面的数据,并且所有在设置这个数字后面的步骤全部被取消。同样,用右键点击一个已经被加灰(推理删除)的候选数(仅用于候选数显示模式),将取消将这个候选数隐含的步骤,同时它后面的所有步骤也全部取消。在批量取消后,同样可以通过选择菜单项“重做”来重新使用这些被取消的步骤,如果因为错误操作(比如不小心用鼠标右键点中一个格子),可以通过按Shift+Y来重做所有被取消的步骤。
    任何时候,我们还可以通过Shift+Z键来检查我们前面的游戏过程是否出现错误,如果出现错误,计算机会自动取消所有错误的步骤

    在候选数显示模式,可以按住Shift然后用鼠标选择一个数字,表示尝试使用这个数据,计算机将在这个选择的数据上打上标签,如上图中H7和B2格子分别打上标签T1和T2.这个表示用户先尝试了H6=4,然后又尝试了B2=5. 在非候选数显示模式,可以通过Shift+数字键来使用尝试功能。
    在游戏出现矛盾时(发现尝试失败),可以通过按住Shift然后用鼠标右键选择一个尝试过的格子(通常应该选择最大标签的格子),这样计算机就认为这个尝试失败,会退回尝试前状态并且自动将这个错误候选数剔除。也可以不按住Shift而是直接用右键选择这个格子,这时只是使用了普通批量撤销功能到使用这个尝试之前的状态。

    通过复制和粘贴功能,可以输入输出游戏。任何时候,按Ctrl+C或者用菜单项"编辑/复制"将把当前游戏局面(所有填充格子的数据被复制)以文本方式复制到粘贴板;然后用户可以将这个局面复制到任何地方。如果用户想复制游戏的起始局面,可以先按Ctrl+R到游戏的起始状态,然后复制游戏,如果再想恢复到自己玩的状态,使用Shift+Y键重新回到前一个步骤就可以了. 同样,对于其他地方以文本形式存在的数独游戏,用户可以先复制到粘贴板,然后切换到游戏按Ctrl+V或者用菜单项"编辑/粘贴"将当前游戏设置成此游戏;计算机会尽量去猜测用户输入局面的格式,但是不能保证总是成功。 对于无法通过粘贴输入的游戏,可以通过使用菜单项"文件/手工输入"来输入游戏,选择这个菜单项后,依次用鼠标或键盘输入预定义数字,输入完毕后,选择菜单项”文件/完成手工输入“来结束游戏的输入,计算机会自动判断输入局面是否只有唯一解。

    在不显示候选数模式,用鼠标左键点击任意一个方格,状态条将显示这个方格中所有候选数。
    任何时候按R键,将显示鼠标所在行各个候选数所在格子
    任何时候按C键,将显示鼠标所在列各个候选数所在格子
    任何时候按B键,将显示鼠标所在九宫各个候选数所在格子

    历史记录浏览
    在历史记录浏览模式,可以使用左右键浏览过去玩过的游戏,计算机会猜测玩家使用过的策略,并且用图形模式显示出来。按HOME和END键分别跳到开始和结束状态。按ESC键退出历史模式。

    在历史模式使用Ctrl+U键将把用户的解答过程用文本方式复制到粘贴板,而非历史模式,使用Ctrl+U键计算机将自动产生一个模拟人工解答过程,并且把它以文本方式复制到粘贴板。

    4.计算机提供提示中所用到的方法:
    现在提供了:唯一数隐含唯一数数对隐含数对唯一矩形法三链数隐含三链数四链数隐含四链数区域删减法, 矩形法(X-WING, SwordFish, JellyFish),关连数删减法(Forcing Chain)

    5. 游戏难度划分:
     入门级:使用唯一数隐含唯一数数对就可以解决的游戏
    高级:    除了入门级的方法,还需使用隐含数对区域删减法三链数的。
    专家级:使用了4中除关连数删减法外提供的方法能够找到结果,但是仅仅用高级的方法还不够的。
    骨灰级:需要使用关连数删减法才有可能解决的问题

    6. 游戏技巧(以及计算机提示方法介绍)
    i)唯一数法

    如果我们发现某个格子中只有一个可用候选数,那么这个格子必然是这个数字,这就是唯一数法
    如下面例子,H5格子中只有唯一候选数3

    如果没有使用候选数模式,那么得到提示信息会如下图


    ii)隐含唯一数法

    如果我们发现某一行某一列或某个九宫有一个候选数只出现在一个格子里面,那么这个格子必然是这个数字,这就是隐含唯一数法,如下面例子,第3列候选数4只出现在格子I3中. 本软件还提供了一种显示单一候选数的模式,在单一候选数模式,我们可以更加容易找到隐含唯一数。比如在这里,我们按Ctrl+Shift+4,那么软件将会只显示候选数4,在这种模式下,就可以非常容易看出I3中的4是隐含唯一数。

    如果没有使用候选数模式,得到提示如下:

    而对于隐含唯一候选数法(还有区间删减法和各种矩形法)我们还可以使用单一候选数模式,比如对于这个例子
    我们可以通过按Ctrl+Shift+4键只显示候选数4,得到如下一个图,根据下图,很显然I3中4是隐含唯一数

    iii)数对法

    如果我们发现某一行某一列或某个九宫有两个格子只使用了两个候选数,那么这两个格子必然正好是这两个数字,那么在这个单元(行,列,或九宫)中,其它格子不会出现这两个候选数,这就是数对法,如下面例子,第一列中B1和G1的候选数都是7,8;那么D1,H1中的候选数7,8可以删除。

    iv)三链数法

    如果我们发现某一行某一列或某个九宫有三个格子只使用了三个候选数,那么这三个格子必然正好是这三个数字,那么在这个单元(行,列,或九宫)中,其它格子不会出现这三个候选数,这就是三链数法,如下面例子,
    最下面中间的九宫中格子H4,H5,I5三个格子都只使用候选数2,8,6;所以G4,G6,I6中出现的8,6都可以删除

    v)四链数法

    如果我们发现某一行某一列或某个九宫有四个格子只使用了四个候选数,那么这四个格子必然正好是这四个数字,那么在这个单元(行,列,或九宫)中,其它格子不会出现这四个候选数,这就是四链数法;如下面例子中
    上面中间的九宫中四个格子A5,B5,C4,C5都只使用了数字1,2,3,4;所以另外4个格子A4,A6,B4,C6中出现的数字1,2,3,4可以删除

    vi)隐含数对法

    如果我们发现某一行某一列或某个九宫中有两个候选数只出现在两个格子中,那么这两个格子必然正好是这两个数字,那么这两格子中其他候选数可以删除,这就是隐含数对法;如下面例子,第A行中,只有格子A7,A8使用了数字6,8;所以这两个格子中其它数字2,5,9都可以删除

    vii)隐含三链数法

    如果我们发现某一行某一列或某个九宫中有三个候选数只出现在三个格子中,那么这三个格子必然正好是这三个数字,那么这三格子中其他候选数可以删除,这就是隐含三链数法,如下面例子,第8列中只有格子C8,F8,G8使用了数字1,3,4;所以格子F8中出现的其它数字6,7,8可以删除

    viii)隐含四链数法

    如果我们发现某一行某一列或某个九宫中有四个候选数只出现在四个格子中,那么这四个格子必然正好是这四个数字,那么这四格子中其他候选数可以删除,这就是隐含四链数法,我们借用四链数中的例子,可以发现上面中间的九宫格中,只有格子A4,A6,B4,C6使用了四个数字5,6,7,9;所以它们使用的其他数字1,2,3,4可以删除。

    ix)区域删减法

    如果我们发现某一候选数在某一单元(行,列,九宫)中完全处在同另外一个单元的交集中,那么在另外一个单元中,不在交集中的这个候选数必然可以删除,如下面例子,第D行中所有数字5都正好在左边中间的九宫中,所以在这个九宫中,不在第D行的候选数5(E3中)可以删除。本软件中,我们也可以使用显示单一候选数模式来更加容易的发现区域删减法的机会。

    x) 矩形法

    如果某个候选数在某两行(列)中只出现在某两行(列)中,那么在那两行(列)中,不在那两列(行)的这个候选数都可以删除,如下面例子,第C行和第F行的候选数3都正好是两个而且出现在第1列和第8列;所以第1列和第8列中,不在第C行和第F行的候选数3 (A8,D1,D8,I1,I8)都可以删除。矩形法也可以在显示单一候选数模式下发现

    把它扩展到三行或四行就可以得到高阶矩形法,同样下面例子中可以删除蓝色的候选数6

    下面的例子中粉色4可以删除

     xi)唯一矩形法

    最新添加唯一矩形法,这个方法利用了数独结果唯一性的特性:如果有四个构成矩形顶点的格子只使用两个数字,而且同在一行或同在一列的格子在同一个宫格中,那么这个局面的结果必然不是唯一的(交换它们使用的数字同样可以得到合法的数独结果),必然不是合法的数独局面。通过这个结论我们分别得到两种删减法:
    如下图A3,C3,A9,C9中,C3必然不能取候选数1和9(不然结果必然不唯一),所以C3只能取候选数5

    如下图,D2和F2中必然有一个格子结果是3,不然D2,F2,D9,F9都只能是数字1和9,结果必然不唯一。
    由此进一步得出第2列中H2不能取3(同样还可以得出在左中宫格中F3不能取3)

    xii)关连数删减法

    通过找到一串强关联数据来得出矛盾来删除候选数。
    如下图,第9列只有G9和D9有候选数3,它们之间就是一种强关联数据,同样D4和I4之间也是强关联的。而如果一个格子中只有两个候选数,那么我们认为这两个候选数也是强关联的数据。
    此外D9和D4之间在同一行都使用数据3,它们是弱关联,同样在一个格子中两个不同候选数也可以看成弱关联。这样通过一系列强弱关联(弱关联可以用强关联替代),
    如果我们可以得到一个矛盾链。如下图,我们可以通过提示中逻辑推理排除G6=3(实际上还可以排除I7=3和I8=3)

    下面是一个更加复杂的例子,用到了多个不同候选数值:

     

     

    展开全文
  • 贪吃蛇小游戏程序(C语言)

    千次阅读 2019-08-11 12:54:57
    这次来分享一个我写的贪吃蛇小游戏程序(C语言)

    这次来分享一个我写的贪吃蛇小游戏程序(C语言)

    最近暑假无事开始用C语言写一些小游戏小游戏程序,这个贪吃蛇当然是经典中的经典,所以先开始写。

    文件引用

    #include<redio.h>//输入输出
    #include<time.h>//用于获取随机数
    #include<windows.h>//控制DOS界面
    #include<stdlib.h>//定义了一些宏和通用工具函数
    #include<conio.h>  //     接收键盘输入输出
    

    函数声明

        /**************************函数声明***************************/
        
      void gotoxy(int x,int y);			//设置光标位置
    int  color(int c);					//更改文字颜色
    void printsnake();					//字符画--蛇
    void welcome();						//开始界面
    void createMap();					//绘制地图
    void scoreandtips();				//游戏界面右侧的积分和小提示
    void initsnake();					//初始化蛇身,花蛇身
    void createfood();					//创建并随机出现食物
    int  biteself();					//判断是否咬到自己
    void cantcrosswall();				//设置蛇撞到墙的情况
    void speedup();						//加速
    void speeddown();					//减速
    void snakemove();					//控制蛇前进方向
    void keyjianpan();					//控制键盘按键
    void Lostdraw();						//游戏结束界面
    void endgame();					    //游戏结束
    void choose();						//游戏失败之后的选择
    void File_out();					//在文件中读取最高分
    void File_in();						//储存最高分文件
    void explation();					//游戏说明
    

    游戏欢迎界面

    /********************游戏欢迎界面***********************/
    int color(int c)      //颜色函数
    {
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);//更改文字颜色
    	return 0;
    }
    
    void gotoxy(int x,int y)    //设置光标位置
    {
    	COORD c;
    	c.X=x;
    	c.Y=y;
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
    }
    void printsnake()
    {
    	int i,j=10;
        gotoxy(37,21);
    	color(14);
    	printf("	张	洋	贪	吃	蛇\n						欢	迎	你!");
    	gotoxy(19-1,9);
    	color(12);
    	printf("张洋");
    	gotoxy(23-1,9);
    	color(12);
    	printf("张洋");	
    	gotoxy(27-1,9);
    	color(12);
    	printf("张洋");	
    	gotoxy(27-1,11);
    	color(12);
    	printf("张洋");
    	gotoxy(19-1,13);
    	color(12);
    	printf("张洋");
    	gotoxy(23-1,13);
    	color(12);
    	printf("张洋");	
    	gotoxy(27-1,13);
    	color(12);
    	printf("张洋");	
    	for(i=20;i<28;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j++;	
    	}
    	for(i=30;i<38;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j--;
    	}
    	for(i=40;i<48;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j++;	
    	}
    	for(i=50;i<58;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j--;
    	}
    	for(i=60;i<68;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j++;	
    	}
    	for(i=70;i<77;i++)
    	{
    	gotoxy(i+10,j);
    	color(j-10);
    	printf("张洋");
        j--;
    	}
    	gotoxy(87,11);
    	color(11);
    	printf("张洋");
        gotoxy(91,11);
    	color(11);
    	printf("张洋");
    	gotoxy(95,11);
    	color(11);
    	printf("张洋");
    	gotoxy(99,11);
    	color(11);
    	printf("张洋");
       	
    }
        /*************************主函数******************************************/
        int main()
    {
    	system("mode con cols=140 lines=40");//设置控制台的宽高
    	printsnake();//绘制字符蛇
    	return 0;
    }
    

    欢迎界面
    在这里插入图片描述
    /************************* 每个人可根据自己的创意,设计不同的欢迎界面。 **********************/

    /************************************************ 开始界面 ********************************************/

    void welcome()
    {
    	int n;
    	int i,j=1;
    	color(14);
    	for (i=24;i<=30;i++)
    	{
    		for (j=35;j<=82;j++)
    		{
    			gotoxy(j,i);
    			if(i==24||i==30)
    			{
    				printf("-");
    			}
    			else if(j==35||j==82)
    			{
    				printf("|");
    			}
    		}
    	}
    	color(12);
    	gotoxy(45,26);
    	printf("1.开始游戏");
    	gotoxy(65,26);
    	printf("2.游戏说明");
    	gotoxy(45,28);
    	printf("3.退出游戏");
    	gotoxy(48,32);
    	color(3);
    	printf("请选择[1 2 3]:[ ]\b\b");
    	color(14);
    	scanf("%d",&n);
    	switch(n)
    	{
    	case 1 :
    		system("cls");//清屏 
    		break;
    	case 2:
    
    		break;
    	case 3:
    		exit(0);
    		break;
    	default:
    		color(12);
    		gotoxy(40,38);
    		printf("请输入1-3之间的数!");
    		getch();  //输入任意键
    		system("cls");  //清屏
    		printsnake();
    		welcome();
    	}
    }
    int main()
    {
    	system("mode con cols=140 lines=40");//设置控制台的宽高
    	printsnake();//绘制字符蛇
    	welcome();
    	return 0;
    }
    

    欢迎
    两个结合在一起,就构成了开始的主界面
    主界面

    游戏主窗体设计

    /****************************游戏主窗体设计*********************************/
    void createMap()           //创建地图
    {
    	int i,j;
    	for (i=0;i<58;i+=2)
    	{
    		gotoxy(i,0);
    		color(5);
    		printf("□");
    		gotoxy(i,26);
    		printf("□");
    	}
    	for (i=1;i<26;i++)
    	{
    		gotoxy(0,i);
    		printf("□");
    		gotoxy(56,i);
    		printf("□");
    	}
    	for (i=2;i<56;i+=2)
    	{
    		for (j=1;j<26;j++)
    		{
    			gotoxy(i,j);
    			color(3);
    			printf("■\n\n");
    		}
    	}
    }
    /*********************游戏右侧的得分和小提示******************/
    void scoreandtips()
    {
    	int i;
    	File_out();							 //调用File_out(),读取文件中的内容
    	gotoxy(74,4);
    	color(11);
    	printf("▂▄▅最高纪录▄▃▂:%d",HighScore);//打印游戏最高分
    	gotoxy(74,8);
    	color(14);
    	printf("得分: %d  ",score);
    	color(13);
    	gotoxy(83,11);
    	printf("小 提 示");
    	gotoxy(70,13);
    	color(6);
    	printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
    	for (i=15;i<25;i=i+2)
    	{
    		gotoxy(70,i);
    		printf("┃");
    	}
    	for (i=15;i<25;i=i+2)
    	{
    		gotoxy(103,i);
    		printf("┃");
    	}
    	gotoxy(70,25);
    	printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");
    	color(3);
    	gotoxy(74,14);
    	printf("每个事物得分:%d 分",add);
    	gotoxy(74,16);
    	printf("不能穿墙,不能咬到自己");
    	gotoxy(74,18);
    	printf("用↑↓←→分别控制蛇的移动");
    	gotoxy(74,20);
    	printf("F1加速,F2减速");
    	gotoxy(74,22);
    	printf("space:暂停游戏");
    	gotoxy(74,24);
    	printf("ESC:退出游戏");
    }
    /***************在文件中读取最高分*******************/
    void File_out()
    {
    	FALSE *fp;
    	fp=fopen("save.txt","a+");		//打开文件save.txt
    	fscanf(fp,"%d",&HighScore);
    	fclose(fp);
    }
    /*****************主函数****************************/
    int main()
    {
    	system("mode con cols=120 lines=40");//设置控制台的宽高
    	printsnake();//绘制字符蛇
    	welcome();//欢迎界面
    	File_out();
    	return 0;
    }
    

    在这里插入图片描述
    在C语言中的文件调用,保存一定要学好,才能在这里灵活运用。

    绘制蛇身和蛇食物

    /******************* 绘制蛇身************************/
        void initsnake()
        {
        	snake *tail;
        	int i;
        	tail=(snake*)malloc(sizeof(snake));  //从蛇尾开始,头插法,以X,Y设定开始的位置
        	tail->x=24;                          //蛇的初始位置(24,5)
        	tail->y=5;
        	tail->next=NULL;
        	for (i=1;i<=4;i++)                     //初始长度为5
        	{
        		head=(snake*)malloc(sizeof(snake));//初始化蛇头
        		head->next=tail;                   //蛇头的下一位为蛇尾
        		head->x=24+2*i;                    //设置蛇头位置
        		head->y=5;
        		tail=head;                         //蛇头变成蛇尾,然后重复循环
        	}
        	while (tail!=NULL)                     //从头到尾,输出蛇身
        	{
        		gotoxy(tail->x,tail->y);
        		color(14);
        		printf("⊕");               //输出蛇身
        		tail=tail->next;           //蛇头输出完毕,输出蛇头的下一位,一直输出到蛇尾
        	}
        }
     
    /*************绘制食物******************************/
    void createfood()
    {
    	snake *food_1;
    	srand((unsigned)time(NULL));				//初始化随机数
    	food_1=(snake*)malloc(sizeof(snake));       //初始化food_1
    	//保证其为偶数,使得食物能与蛇头对齐,然后食物会出现在网格线上
    	while ((food_1->x%2)!=0)
    	{
    		food_1->x=rand()%52+2;           //设置食物的X坐标随机出现,食物的x坐标在2-53
    	}
    	food_1->y=rand()%24+1;             //食物的Y坐标在1-24
    	q=head;
    	while (q->next==NULL)
    	{
    		if (q->x==food_1->x&&q->y==food_1->y)  //判断蛇身是否与食物重合
    		{
    			free(food_1);           //如果食物与蛇身重合,那么释放食物指针
    			createfood ();          //重新创建食物
    		}
    		q=q->next;
    	}
    	gotoxy(food_1->x,food_1->y);    //设置食物位置
    	food=food_1;
    	color(12);
    	printf("▼");             //输出食物
    
    } 
    

    在这里插入图片描述
    此时贪吃蛇的游戏界面就已经大致做好,剩下的是进行游戏需要的逻辑等;

    游戏逻辑

     /**********************************游戏逻辑**********************************/
        
        /*********************判断是否咬到自己*****************/
        int biteself()
        {
        	snake *self;								//定义self为蛇身上的一个节点
        	self=head->next;							//self是蛇头之外的蛇身上的节点
        	while(self!=NULL)
        	{
        		if (self->x==head->x&&self->y==head->y)   //如果self和蛇头上的节点重合
        		{
        			return 1;    						  //返回1
        		}
        		self=self->next;    					 //循环蛇上的每一个节点
        	}
        	return 0;
        }
        /************判断蛇是否撞到墙******************/
        void cantcrosswall()
        {
        	if (head->x==0||head->x==56||head->y==0||head->y==26)//如果蛇头碰到了墙壁
        	{
        		endgamestatus=1;    					  //返回第一种情况
        	}
        }
        /*******************设置蛇加速前进**********/
        void speedup()
        {
        	if (sleeptime>=50)  						 //如果时间间隔大于等于50
        	{
        		sleeptime=sleeptime-10;  				 //时间间隔减10
    		     add=add+2;                               //每吃一次食物的得分加2
        		if(sleeptime==320)
        		{
        			add=2;                                //防止减到1之后再加回来有错
        		}
        	}
        }
        /*******************设置蛇减速前进************/
        void speeddown()
        {
        	if (sleeptime<350)              		 	//如果时间间隔小于350
        	{
        		sleeptime=sleeptime+30;     		 	 //时间间隔加上30
        		add=add-2;                				 //没吃一次食物的得分减2
        		if (sleeptime==350)
        		{
        			add=1;               				  //保证最低分为1
        		}
        	}
        }
        /******************控制方向*************************/
    void  snakemove()
    {
    	snake *nexthead;
    	cantcrosswall();
    	nexthead=(snake*)malloc(sizeof(snake));  //为下一步开辟空间
    	if (status==W)
    	{
    		nexthead->x=head->x;    //向上前进时,x坐标不变,y坐标-1
    		nexthead->y=head->y-1;
    		nexthead->next=head;
    		q=head;                //指针q指向蛇头
    		//如果下一个有食物,下一个位置的坐标和食物的坐标相同
    		if (nexthead->x==food->x&&nexthead->y==food->y)
    		{
    			while (q!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //原来食物的位置,从▼变成⊕
    				q=q->next;       //指针q指向的蛇身的下一位也执行循环里的操作
    			}
    			score=score+add;      //吃了一个食物,在总分上加上食物的分
    			speedup();
    			createfood();         //创建食物
    		}
    		else
    		{
    			while (q->next->next!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //蛇正常往前走,输出当前位置的蛇身
    				q=q->next;       //继续输出整个蛇身
    				
    			}
    			//经过上面的循环,q指向蛇尾,蛇尾的下一位,就是蛇走过去的位置
    			gotoxy(q->next->x,q->next->y);
    			color(3);
    			printf("■");
    			free(q->next);     //进行输出▼之后,释放指向下一位的指针
    			q->next=NULL;     //指针下一位指向空
    		}
    	}
    	///
    	if (status==S)                 
    	{
    		nexthead->x=head->x;    //向上前进时,x坐标不变,y坐标+1
    		nexthead->y=head->y+1;
    		nexthead->next=head;
    		q=head;                //指针q指向蛇头
    		//如果下一个有食物,下一个位置的坐标和食物的坐标相同
    		if (nexthead->x==food->x&&nexthead->y==food->y)
    		{
    			while (q!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //原来食物的位置,从▼变成⊕
    				q=q->next;       //指针q指向的蛇身的下一位也执行循环里的操作
    			}
    			score=score+add;      //吃了一个食物,在总分上加上食物的分
    			speedup();
    			createfood();         //创建食物
    		}
    		else
    		{
    			while (q->next->next!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //蛇正常往前走,输出当前位置的蛇身
    				q=q->next;       //继续输出整个蛇身
    				
    			}
    			//经过上面的循环,q指向蛇尾,蛇尾的下一位,就是蛇走过去的位置
    			gotoxy(q->next->x,q->next->y);
    			color(3);
    			printf("■");
    			free(q->next);     //进行输出▼之后,释放指向下一位的指针
    			q->next=NULL;     //指针下一位指向空
    		}
    	}
    	/
    	if (status==A)
    	{
    		nexthead->x=head->x-2;    //向左前进时,x坐标向左移动-2,y坐标不变
    		nexthead->y=head->y;
    		nexthead->next=head;
    		q=head;                //指针q指向蛇头
    		//如果下一个有食物,下一个位置的坐标和食物的坐标相同
    		if (nexthead->x==food->x&&nexthead->y==food->y)
    		{
    			while (q!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //原来食物的位置,从▼变成⊕
    				q=q->next;       //指针q指向的蛇身的下一位也执行循环里的操作
    			}
    			score=score+add;      //吃了一个食物,在总分上加上食物的分
    			speedup();
    			createfood();         //创建食物
    		}
    		else
    		{
    			while (q->next->next!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //蛇正常往前走,输出当前位置的蛇身
    				q=q->next;       //继续输出整个蛇身
    				
    			}
    			//经过上面的循环,q指向蛇尾,蛇尾的下一位,就是蛇走过去的位置
    			gotoxy(q->next->x,q->next->y);
    			color(3);
    			printf("■");
    			free(q->next);     //进行输出▼之后,释放指向下一位的指针
    			q->next=NULL;     //指针下一位指向空
    		}
    	}
    	/
    	if (status==D)
    	{
    		nexthead->x=head->x+2;    //向右前进时,x坐标向左移动+2,y坐标不变
    		nexthead->y=head->y;
    		nexthead->next=head;
    		q=head;                //指针q指向蛇头
    		//如果下一个有食物,下一个位置的坐标和食物的坐标相同
    		if (nexthead->x==food->x&&nexthead->y==food->y)
    		{
    			while (q!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //原来食物的位置,从▼变成⊕
    				q=q->next;       //指针q指向的蛇身的下一位也执行循环里的操作
    			}
    			score=score+add;      //吃了一个食物,在总分上加上食物的分
    			speedup();
    			createfood();         //创建食物
    		}
    		else
    		{
    			while (q->next->next!=NULL)
    			{
    				gotoxy(q->x,q->y);
    				color(14);
    				printf("⊕");    //蛇正常往前走,输出当前位置的蛇身
    				q=q->next;       //继续输出整个蛇身
    				
    			}
    			//经过上面的循环,q指向蛇尾,蛇尾的下一位,就是蛇走过去的位置
    			gotoxy(q->next->x,q->next->y);
    			color(3);
    			printf("■");
    			free(q->next);     //进行输出▼之后,释放指向下一位的指针
    			q->next=NULL;     //指针下一位指向空
    		}
    	}
    	if (biteself()==1)			//判断是否会咬到自己
    	{
    		endgamestatus=2;
    	}
    }
    /******************************* 键盘 ************************************/
    void key()
    {
    	status=R;					//初始蛇向右移动 
    	while (1)
    	{
    		scoreandtips();           //游戏界面右侧的得分和小提醒
    //GetAsyncKeyState函数 用来判断函数调用时指定虚拟键的状态
    		if (GetAsyncKeyState(VK_UP)&&status!=S)
    		{
    			status=W;      //如果蛇不是向下前进的时候,按向上键,执行向上前进操作
    		}
    		else if (GetAsyncKeyState(VK_DOWN)&&status!=W)
    		{
    			status=S;      //如果蛇不是向上前进的时候,按向下键,执行向下前进操作
    		}
    		else if (GetAsyncKeyState(VK_LEFT)&&status!=D)
    		{
    			status=A;      //如果蛇不是向右前进的时候,按向左键,执行向左前进操作
    		}
    		else if (GetAsyncKeyState(VK_RIGHT)&&status!=A)
    		{
    			status=D;      //如果蛇不是向左前进的时候,按向右键,执行向右前进操作
    		}
    		if (GetAsyncKeyState(VK_SPACE))     //按下暂停键,执行pause暂停函数
    		{
    			while (1)
    			{
    	//Sleep()函数,头文件#include <unistd.h>另进程暂停,直到达到里面设定参数的时间
    				Sleep(300);
    				if (GetAsyncKeyState(VK_SPACE))  //按下空格键暂停
    				{
    					break;
    				}
    			}
    		}
    		else if (GetAsyncKeyState(VK_ESCAPE))
    		{
    			endgamestatus=3;   //按ESC,直接到结束界面
    			break;
    		}
    		else if (GetAsyncKeyState(VK_F1))   //按F1,加速
    		{
    			speedup();
    		}
    		else if (GetAsyncKeyState(VK_F2))   //按F2,减速
    		{
    			if (sleeptime<350)            //如果时间间隔小于350
    			{
    				sleeptime=sleeptime+30;  //时间间隔加上30
    				add=add-2;                //没吃一次食物的得分减2
    				if (sleeptime==350)
    				{
    					add=1;                //保证最低分为1
    				}
    			}
    		}
    		Sleep(sleeptime);                 //不按键时,蛇保持前行
    		snakemove();
    	}
    }
    /*****************主函数****************************/
    int main()
    {
    	system("mode con cols=120 lines=40");	//设置控制台的宽高
    	printsnake();							//绘制字符蛇
    	welcome();								//欢迎界面
    	File_out();
    	key();
    	return 0;
    }
    

    游戏失败界面

    /************************失败界面*********************/
    void Lostdraw()
    {   
    	int k;
    	system("cls");
    	gotoxy(50,2);
    	printf("∑游戏结果");
    	gotoxy(17,5);
    	color(11);
    	printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    	printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
    	for (k=7;k<=18;k++)  //竖边框
    	{
    		gotoxy(17,k);
    		printf("┃");
    		gotoxy(82,k);
    		printf("┃");
    	}
    	gotoxy(17,20);
    	printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    	printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");
    }
    /****************************结束游戏*****************/
    void endgame()
    {
    	system("cls");
    	if (endgamestatus==1)   //如果蛇撞到了墙
    	{
    		Lostdraw();
    		gotoxy(35,9);
    		color(12);
    		printf("对不起,你头铁也撞不烂墙。游戏结束");
    	}
    	else if (endgamestatus==2)  //如果蛇咬到了自己
    	{
    		Lostdraw();
    		gotoxy(35,9);
    		color(12);
    		printf("对不起,你咬到了自己,游戏结束!");
    	}
    	else if (endgamestatus==3)  //如果按ESC键退出
    	{
    		Lostdraw();
    		gotoxy(40,9);
    		color(12);
    		printf("你已经结束了游戏!");
    	}
    	gotoxy(43,12);
    	color(13);
    	printf("你的得分是 %d",score);
    	if (score>=HighScore)
    	{
    		color(10);
    		gotoxy(40,16);
    		printf("牛逼,创纪录了!!");
    		File_in();     //把最高分写进文件
    	}
    	else                  //如果低于最高分
    	{
    		color(10);
    		gotoxy(35,16);
    		printf("继续努力啊,你离最高分还差:%d",HighScore-score);
    	}
    	choose();    //边框下面的分支选项
    }
    /********************边框下面的分支选项************/
    void choose()
    {
    	int m;
    	gotoxy(25,23);
    	color(12);
    	printf("我要重新玩一把-------- 1");
    	gotoxy(52,23);
    	printf("不玩了,退出-------- 2");
    	gotoxy(46,25);
    	color(11);
    	printf("选择: ");
    	scanf("%d",&m);
    	switch(m)
    	{
    	case 1:
    		system("cls");   //清屏
    		score=0;        //分数归零
    		sleeptime=200;   //设定初始速度
    		add=10;         //使add设为初值,吃一个食物得十分,然后累加
    		printsnake();   //返回欢迎界面
    		welcome();
    		break;
    	case 2:
    		exit(0);             //退出游戏
    		break;
    	default:           //输入1或2以外的数字
    		gotoxy(35,27);
    		color(12);
    		printf("不要瞎输入,请重新输入");
    		system("pause>nul");     //按任意键
    		endgame();
    		choose();  //边框下面的分支语句
    		break;
    	}
    }
    
    /*****************主函数****************************/
    int main()
    {
    	system("mode con cols=120 lines=40");	//设置控制台的宽高
    	printsnake();							//绘制字符蛇
    	welcome();								//欢迎界面
    	File_out();                             //读取文件信息
    	keyjianpan();                           //控制键盘按键
    	endgame();                              //游戏结束
    	return 0;	
    }
    

    注:此时还要记住在前面蛇不同的失败函数里加上endgame();
    在这里插入图片描述
    在这里插入图片描述

    游戏说明

    /*********************游戏说明************************/
    void explation()
    {
    	int i,j=1;
    	system("cls");
    	color(13);
    	gotoxy(52,3);
    	printf("游戏说明");
    	color(2);
    	for (i=6;i<=22;i++)     //输出上下边框
    	{
    		for (j=20;j<=75;j++)
    		{
    			gotoxy(j+10,i);
    			if (i==6||i==22)
    			{
    				printf("||");
    			}
    		}
    	}
    	color(3);
    	gotoxy(40,8);
    	printf("一:不能穿墙,不能咬到自己");
    	color(10);
    	gotoxy(40,11);
    	printf("二:用↑↓←→分别控制蛇的移动");
    	color(14);
    	gotoxy(40,14);
    	printf("三:F1加速,F2减速");
    	color(11);
    	gotoxy(40,17);
    	printf("四:安空格键暂停,再按空格键继续");
    	color(4);
    	gotoxy(40,20);
    	printf("五:ESC:退出游戏,space:暂停游戏");
    	getch();//按任意键返回主界面
    	system("cls");
    	printsnake();
    	welcome();
    }
    

    在这里插入图片描述

    此时一个好玩的贪吃蛇游戏就做好了,大家可以自己试一试,有利于理解C语言的相关运用

    可以关注一下再走。。。。。。

    不想要自己费时学习的可以直接找我要完整代码

    后续

    源码地址
    如果想了解更多物联网、智能家居项目知识,可以关注我的程序设计专栏
    订阅专栏后,可以在微信公众号上私聊我,直接发给你源码。
    或者关注公众号。
    在这里插入图片描述

    编写不易,感谢支持。

    展开全文
  • 简单的扑克牌游戏程序

    千次下载 热门讨论 2002-08-15 00:00:00
    一个简单的扑克牌游戏程序.
  • 【python】小游戏程序——弹跳小球

    千次阅读 2019-08-26 14:54:55
    大概在一年前写了一篇使用C语言编写的弹跳小球小游戏:【c语言】小游戏程序——弹跳小球 如今学了python,所以就想使用python来写个小游戏练习下手感 ———————————————LINE————————————...

    大概在一年前写了一篇使用C语言编写的弹跳小球小游戏:【c语言】小游戏程序——弹跳小球

    如今学了python,所以就想使用python来写个小游戏练习下手感

    ———————————————LINE————————————————

    先来看看最后的效果:

    ——————————————下面是正文———————————————

           相比C语言,python中提供了很多第三方库用以简便开发,其中就有一个叫 “pygame” 的第三方库可以用以开发一些简便的游戏,本篇博文就用到了这个第三方库。下面说明下编译环境以及pygame的配置方法

    编译环境:pycharm

    在pycharm中配置pygame的方法:其实加载第三方库的方法有很多,如使用pip工具等,以下介绍我用起来十分方便的方法。

                                                                       

    按照以上图示选择之后,将进入第三方库配置页面:

    之后按照以下指示即可将第三方库安装完成:

    安装 pygame 之后,我们即可在窗口进行程序的编写。

    ——————————————下面是代码———————————————

    首先我们把需要用到的库导入进来:

    import pygame,sys
    import time
    

    之后进行初始化设置:

    pygame.init()  
    screen = pygame.display.set_mode((600,400))
    pygame.display.set_caption("弹跳小球")
    ball = pygame.image.load("1.jpg")
    ballrect = ball.get_rect()
    

    此处,先对代码进行解析:

    • pygame.init() — 初始化所有导入的 pygame 模块
    • pygame.display.set_mode() — 设置游戏窗体大小,此处将窗体设置成600x400
    • pygame.display.set_caption() — 设置游戏窗体名称
    • pygame.image.load() — 导入小球的照片,可上网百度
    • pygame.get_rect() — 将图片控制在矩形之内,这里可能需要更加详细地说明,对导入的图片进行控制,实际上是对图片的矩形进行控制,如下图我在博文中所使用的球为例:

                                           

    则可以根据坐标系获取更多的属性:比如top,left,bottom,right,size,width,height等。

    初始化完成之后,我们就可以进行小球的属性设置:

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    
        time.sleep(0.003)
        ballrect = ballrect.move(speed[0],speed[1])
        if ballrect.left < 0 or ballrect.right > 600 :
            speed[0] =- speed[0]
        if ballrect.top < 0 or ballrect.bottom > 400 :
            speed[1] =- speed[1]

           我们可以知道,当小球碰到左右上下的框的时候,小球需要反弹回来,所以当包裹小球的矩形超过了窗体的大小时,将其速度设置为负,即反向速度,以实现 “弹” 这个特性。 在代码中我添加了一个延时,如果没有添加延时的话效果就是如下:

     

    最后添加一些收尾工作:

        screen.fill(0,0,0)  %因为小球划过的区域系统会默认填充为白色,所以使用该函数将划过的区域填充为黑色,RGB(0,0,0)即黑色
        screen.blit(ball,ballrect)  %将一个平面的一部分或全部图象整块从这个平面复制到另一个平面
        pygame.display.update()  %刷新函数

    ​​​​​​​

    展开全文
  • 【c语言】小游戏程序——弹跳小球

    万次阅读 多人点赞 2018-09-04 15:46:56
    现在说一下其中一个最简单的小程序:弹跳小球 ———————————————LINE———————————————— 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标...
  • 游戏程序新模块添加流程

    千次阅读 2015-03-06 11:12:48
    游戏程序的设计和添加只要遵循正确的方式和流程,就能帮助程序员做出更加容易维护和健壮的程序。节省出来的时间,大家可以看看书,喝喝茶,程序员的生活是不是更加美好,效率更加高效。
  • 游戏开发这个世界太广阔了,这篇文章中,我只在程序实现的抽象逻辑上,开一个口子进行一些肤浅的阐述。当我去设计一个游戏,一个玩法,包含规则,游戏对象等等一系列的游戏系统,用纸可以写下来,用嘴可以说出来,...
  • 自学游戏程序的必备资料

    千次阅读 2013-03-01 14:11:22
    根据汇众教育中关村游戏培训学校专家称,如果要想自学游戏程序,那么这些事你必备的游戏开发资料 1、Gamebryo 2.2游戏引擎(盛大、腾讯等公司制作网络游戏常用)+Gamebryo v2.2.1说明文档 2、游戏PDF书及其代码:...
  • printf("这是一个猜数字游戏!游戏开始时!\n"); srand(time(NULL)); while(true) { chones = 1 + rand() % limit; printf("这是一个猜数字游戏(范围1~20)\n"); for( unsigned int count = max ; ...
  • 游戏程序还是其他什么功能的程序从开发者角度来说,差别都不是很大。真正区别比较大的地方应该是在于产品设计上。    不过不得不说,游戏是软件世界里最大型和复杂的一类应用之一,代码规模基本上都在百万行这个...
  • 刚拿到前导的《G档案》,发现了主程刘刚的文章,是目前我所见 到的关于游戏编程的最好的一篇,与大家共享。...1 游戏程序理论 1.1 技术基础 1.2 游戏底层 1.3 编写规则 1.4 程序设计
  • 如何判断一个捕鱼游戏程序是否好

    千次阅读 2016-12-21 14:28:55
     如何判断一个捕鱼游戏程序是否好?我们可以从以下几个方面来判别:  1.基于良好的第三方引擎  游戏需要引擎。目前市场来讲,流行的捕鱼主要版本有:DX9引擎,HGE引擎,XLBE引擎,相对比较而言,DX9引擎性能第一...
  • 本书的主要目的是教会读者在Delphi环境中使用8位色图进行图像和游戏程序设计。书中以“how-to”(入门指导)方式安排章节,内容有:游戏程序设计、游戏的构成、基本图形程序设计、DirectX介绍、调色板、子画面技术、...
  • Java游戏程序 - 推箱子

    万次阅读 2008-01-16 14:15:00
    第一个Java游戏程序 - 推箱子 本人是写面向过程程序长大的,对游戏程序一窍不通。最初的想法是做一个超级玛丽来自己玩玩,结果完全没思路,遂找CC老师指引人生方向。最终的结论是,推箱子最简单,写出了推箱子在...
  • 个人觉得还是游戏程序能够更好的激发我们的潜力所以,话不多说下面就来使用python编写我们简单的游戏程序吧。 储备知识 ①import 模块:time时间模块、random随机数模块 ②列表:[ ] #[]中放入值,与数组很像,...
  • 调试游戏程序的学问

    万次阅读 2006-06-02 15:26:00
    1.1 调试游戏程序的学问 作者:Steve Rabin, Nintendo of America Inc.ս̥
  • OpenGL游戏程序设计 ——美 k.霍金 & D.阿斯特  这本书是国外经典教材,是学习使用OpenGL进行3D游戏设计的一个很实用的资料,非常适合于打算进行游戏开发的程序员使用。 本书重点介绍了如何使用高性能的OpenGL...
  • Visual C++ 冒险游戏程序设计

    千次阅读 2005-09-11 14:46:00
    前段时间阅读《Visual C++ 冒险游戏程序设计》,顺便作了点笔记,现登在这里,认为值得看的朋友就看看吧……CHAPTER 1来做冒险游戏吧 冒险游戏(AVG):Adventure Game---虚拟体验故事的游戏总称。在冒险游戏中,故事...
  • 第九章 游戏程序的生命周期 在讲解游戏程序的生命周期之前,让我们先看看普通Android应用的生命周期。关于生命周期,SDK附带的文档上有详细的解释,让我们打开文档,找到andorid.app->Activity,我们会看到这样一张...
  • 用C++ MFC编写一个简单的五子棋游戏程序

    千次阅读 多人点赞 2020-02-18 18:38:26
    在学习了C++ MFC编程后,就萌生了编写一个五子棋程序的想法。诚然,用C#来编写的话可能界面会好很多,但是我的主要目标不在界面而是算法,所以利用了VS的MFC来编写程序程序实现 step1:在VS中创建一个MFC对话框...
  • 编写一个猜数字游戏程序

    千次阅读 2019-03-27 22:25:17
    程序随机生成1~100之间的整数; 用户在命令行中输入猜测整数; 根据用户输入给出相应提示:“猜打了”、“猜小了”、“猜对了”; 可让用户再次输入整数游戏,直到提示“猜对了” 统计用户猜测的次数,在猜对时...
  • java小游戏程序的编写

    千次阅读 2018-09-16 16:06:14
    1.完成功能时,先去看是谁的行为 &nbsp;&nbsp;1.1&gt;所有派生类都有的行为,就写在超类FlyingObject中 &nbsp;&nbsp;&nbsp;&nbsp;1.1.1&gt;所有派生类行为都一样,设计为普通...g
  • 如何编写简单的游戏程序

    千次阅读 2019-09-25 03:24:14
    //stone.cpp #include <graphics.h> #include <iostream.h> #include <conio.h> #include <bios.h> #include <stdlib.h> #include <time....
  • 将要打包的py文件放入所创建的C:\Users\EDZ\Pyinstaller目录中,将自定义程序图标ico文件,也一同放进程序所在目录程序。 介绍一下 Pyinstaller 常用的参数用法: -F: 表示生成单个可执行文件 -D:...
  • 手持终端设备,包括手机,智能手机,掌上电脑等等...Palm OS:不同平台上的游戏程序,存在着不兼容的问题。而Java语言的跨平台特性,在手持终端设备得到很好的体现和应用。很多平台供应商,比如微软,高通,和手机制造
  • 创建Unity新项目并编译成游戏程序

    千次阅读 2016-07-21 16:02:38
    注:本人所使用的Unity版本为:Unity5.3.5f1,所使用的VS版本为:Visual.Studio.2013....然后再点击【Build Settings】中的【Build】,选择保存路径即可将程序编译成独立运行的标准Windows程序。结束后如图所示:
  • MFC游戏程序 - 碰撞的小球

    千次阅读 2008-05-27 16:07:00
    windows程序设计做的练习。高中的时候就是靠物理吃饭的,学了windows编程很期待能用一用。这个程序就是模拟了许多刚体小球在平面上运动,当两球撞在一起时按照动量守恒定理改变两球的运动速度。地面和小球之间也有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552,303
精华内容 220,921
关键字:

游戏程序