| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2344 人关注过本帖, 1 人收藏
标题:初学C语言!浅谈C游戏的编写!想做游戏的看看!高手请多多指教!(一)
只看楼主 加入收藏
一尛星一
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:41
专家分:49
注 册:2009-10-17
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:17 
初学C语言!浅谈C游戏的编写!想做游戏的看看!高手请多多指教!(一)
        初学C语言不久!刚发表了一个C语言游戏!是迷宫子的!做完那个游戏我也很惊讶!原来游戏就是反复判断而          成的!因为初学,所以并没复杂的东东!下面开始解析游戏制作步骤!
        (纯属个人思路!或许有问题!因为没深入C语言数据结构!也请高高手的大侠们指点下!)
      
        首先(键盘)
        玩游戏都要用键盘吧!游戏控制要用键盘!可是(谭浩强)书里没写怎么用键盘控制!
        貌似用什么都要用“Enter”输入!第一次用C做迷宫是用的WASD!来上下左右!每次按下WASD还要按Enter!
        这极其麻烦!所以这里就要用键码!键码我不知道是什么东西!因为我也刚学!可我基本会用吧!
        用键码要先用宏定义!"#define"也不是非要这样!只是这样方便些!因外键码都是十六进制数字!
        手动每次输入容易出错!都是XXXFFFOOO的!
        以下是上下左后和WASD得键码!
        #define LEFT 0x4b00
        #define RIGHT 0x4d00
        #define DOWN 0x5000
        #define UP 0x4800
        #define ESC 0x011b
        #define ENTER 0x1c0d
        #define W   0x1177   
        #define S   0x1f73   
        #define A   0x1e61   
        #define D   0x2064
      
        有键码,做游戏玩游戏都方便多了!
        用键码的方法以下举例!
        #include<stdio.h>
        #define W   0x1177    定义W的键码!
        int main()
        {
        key=bioskey(0);        这里相当于一个scanf的输入!你触摸键盘的键码会赋值在key上!
        if(key==W)        如果你触摸的键码是W的!也就是W!则判断为1!
        {
            printf("  yes");
        }
        getch();
    }
    这里注意的是!键码非要提前定义!不定义计算机不识别你按得字母!或者手动输入键码!
    #include<stdio.h>
    int main()
    {
        key=bioskey(0);
        if(key==0x1177)
        {
            printf("  yes");
        }   
        getch();
    }
    键盘上没个按键都有键码!某些键盘按键的键码不一样!应该是为了兼容!就只识别键码吧!不识别键码所附带的按键字符!
    这样的键码!就可以实现上下左右!

    接下来(移动)
    一般都游戏都要移动!怎么样实现移动呢?我曾经想过!结果发现可以这样!当然,这只是个人用法!高手可以指点!越详细越好!
   
    用数组!高手就加上指针吧!
    一个二维数组!数组的第一行第一个位置定义一个字符"*"!要让它移动!就把它附给数组的第一行第二个位置!在把第一个位置清空    !我是赋值为空格!这样显示的也是空!
    这样就是移动了!
   

    迷宫主要就是移动!要做迷宫就是反复的移动!
    接下来就是一个坐标关系了!到了数组的某些地方触发什么效果!这就是编程的问题了!
   




   

    到此!如果还有谁不懂可以回复!本人很喜欢游戏!所以会尽量很详细的去回复读者!
   
    本人很喜欢游戏!所以更希望高手们可以指点指点!多多指教!!在下感激不尽!
   
   
搜索更多相关主题的帖子: 游戏 初学 编写 C语言 
2009-10-18 20:48
xu0xiang0
Rank: 2
等 级:论坛游民
帖 子:13
专家分:49
注 册:2009-10-15
收藏
得分:1 
    看了你发布的那个游戏,不过没运行,因为我没有TC,也没有WIN—TC。很佩服你的热情,我也是一直想做游戏,不过人太懒了。
    在此小小地建议一下:为何不用VC6.0编译平台。TC平台本身有些问题,加上她的图形系统现在不是很被支持,你用TC写的程序在没有TC的人那里不太好运行。
    以前我一直用TC2.0,直到写数据结构课程的 迪杰斯特拉 程序时发现TC2.0有问题,这才转用VC6.0。
    你写游戏,为何不用 OpenGL 或 微软的 DirectX ,虽然我不会这两个,不过我知道这两个的应用范围很广。
2009-10-18 21:18
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:1 
楼主之前学过别的语言没》?如果没有那你也太强了,刚学不久就会玩这个了。。不过键码也可以用十进制表示的如
#define Esc 27

离恨恰如春草,更行更远还生。
2009-10-18 21:26
一尛星一
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:41
专家分:49
注 册:2009-10-17
收藏
得分:0 
回复 楼主 一尛星一
因为现在是个学生!编译器都不清楚!只要能写就行!呵呵!我刚下了VS.6!你不说我还不知道有那编译器!那我用用看吧!谢谢啊!
2009-10-18 21:31
一尛星一
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:41
专家分:49
注 册:2009-10-17
收藏
得分:0 
回复 2楼 xu0xiang0
没有啊!只不过就是对那敢兴趣而已!恩!我以为都是16的进制哦!呵呵!谢谢指教!
2009-10-18 21:39
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
呵呵,佩服!支持你!我还要继续学习!

离恨恰如春草,更行更远还生。
2009-10-18 21:43
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:1 
牛啊··比我牛多·要好好学习·
2009-10-19 06:37
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:1 
详细讲下用数组控制移位。

我现在的理解是:假如只在一行上运动,定义一个一维数组char a[80]={'*'},也就是a[0]是‘*’,当输入‘→’时,程序的意思就是把'*'赋给下一项,即a[1]='*',a[0]同时清零。以此类推,当输入‘←’时,程序的意思就是把'*'赋给前一项,即a[n-1]=a[n],同时a[0]项清零。这样理解对不?
然后就是关于怎么“清零”,楼主用的是用空格替代原来的项,我觉得这样应该影响程序的质量,因为空格也是字符,也占内存,只不过看不见而已,能不能当当前项被赋值给下一项或前一项的时候,当前项直接释放内存?(ps:怎么释放?)
一般而言,我们都是一次一次输出的,比如刚开始a[80]输出会是(*),当点了一下'→'时,a[1]变成了'*',那么就会再输出一次,输出( *),这样的话,那执行一个操作,都会把诸如地图什么的都要输出一次,就没有那种游戏的感觉了,但楼主的游戏代码是直接在一个图上操作的,请问是怎么实现的?重点讲下丝路(因为程序我可能看不懂

我可好玩啦...不信你玩玩^_^
2009-10-19 08:51
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:1 
支持下楼主,
你可谓小强了;
2009-10-19 11:20
一尛星一
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:41
专家分:49
注 册:2009-10-17
收藏
得分:0 
回复 7楼 jiangwu10057
蒽!那个空格占内存我也知道!可是我不知道怎么解决!
我的地图也是每次全部都要输出!着个迷宫也是!不过现在可以不用全部每次输出了!就是清空特定坐标的字符!用gotoxy();函数清空一两个字符!这样就可以只输入一次地图!然后只清空或赋值特定的各把坐标!(着是听前辈叙述的)因该可以!
如果想详细探讨!加我QQ吧!291606494
2009-10-19 18:27
快速回复:初学C语言!浅谈C游戏的编写!想做游戏的看看!高手请多多指教!(一) ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035834 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved