本文目录一览:
- 1、如何使用Cocos2d-x制作一个塔防游戏
- 2、急求一个用C语言或C++制作的塔防游戏代码
- 3、C语言大一新生设计简易塔防游戏,想实现绘制路线的目的,想通过键盘上的横线和竖线实现如图的效果,结果
- 4、如何用Adobe Flash CS6制作简单塔防游戏?
- 5、如何制作一个塔防游戏
- 6、想用C++做一个塔防游戏
如何使用Cocos2d-x制作一个塔防游戏
本教程将会教大家如何使用Cocos2d-x来做一个基于tile地图的游戏,当然还有Tiled地图编辑器。(我们小时候玩的小霸王小学机里面的游戏,大部分都是基于tile地图的游戏,如坦克大战、冒险岛、吞食天地等)我们将会创建一个忍者在沙漠中找西瓜吃的小游戏。
在第一部分教程中,我将教大家如何使用Tile来创建地图,怎样把地图加到游戏中,怎么让地图跟随玩家滚动,以及怎样使用对象层。
在第二部分教程中,我将介绍如何在地图中创建可碰撞的区域,如何使用tile属性,如何制作可拾取的物体和动态修改地图,还有确保忍者不要吃撑了!
如果你还没有准备好的话,你可能需要先从《如何用Cocos2d-x3.0制作一款简单的游戏》系列教程开始学起,因为我们这个教程使用了大量的基本概念,而这些概念都可以从上面的教程中获取。
好了,让我们玩一玩tile地图吧!
创建工程骨架
让我们首先创建整个工程的骨架,这样可以确保今后我们需要的文件都包含进来了,并且能够跑起来。
首先工程命名为TileGame。
接下来,下载游戏资源文件。这个资源文件包里包含了以下内容:
玩家sprite。这个图片和《如何用Cocos2d-x3.0制作一款简单的游戏》差不多。
我使用cxfr这个工具制作的一些音效。
我使用Garage Band制作的一些背景音乐。(查看这篇博文获得更多的信息)
我们将会使用的tile集合--它实际上会和tile地图编辑器一块儿使用,但是,我想把它放在这里,余下的事情会变得更容易。
一些额外的“特殊”的tile,我将会在后面加以说明。
一旦你获得了这些资源,解压并把它拖到你的工程的“Resources”分组下面。(编者的话:上面的音频资源都被编者转成了mp3格式)
如果一切顺利,所有的文件应该都在你的工程里了。是时候制作我们的地图了!
使用Tile来制作地图
Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图。(建议大家在安装的时候选择英文,本教程的Tile采用英文的)
下载完之后,直接双击运行。点击File\New,然后会出现以下对话框:
在 orientation部分,你可以选择Orthogonal。Layer format我们也选默认的 Base64(zlib compressed)。
接下来,设置地图的大小。记住,这个大小是以tile为单位的,而不是以像素为单位。我们将创建一个尽量小的地图,因此选择50*50。
最后,你指定每个tile的宽度和高度。你这里选择的宽度和高度要根据你的实际的tile图片的尺寸来做。这个教程使用的样例tile的尺寸是32*32,所以在上面的选项中选择32*32.
接下来,我们把制作地图所需要的tile集合导入进来。点击菜单栏上面的“map”菜单,“New Tileset...”,然后会出现下面的窗口:
为了获得图片,点击“Browse...”按钮,然后定位到工程的的Resources文件夹,选择 tmw_desert_spacing.png文件(我们刚才解压进去的),然后加到工程中去。它会基于文件名自动填充名称。然后把新图快 名称命名为“tmw_desert_spacing.png”.同时,设置下面的Tile spacing和Margin都为1。
你可以保留宽度和高度为32*32,因为tile的实际大小也是这么多。至于margin和spacing,我还没找到任何好的文档解释如何设置这两个值,下面是我的个人看法:
Margin就是当前的tile计算自身的像素的时候,它需要减去多少个像素(宽度和高度都包含在内)。(类比word、css的margin)
Spacing 就是相邻两个tile之间的间隔(同时考虑宽度和高度)(类比word、css的spacing)
如果你看看 tmw_desert_spacing.png,你将会看见每一个tile都有一个像素的空白边界围绕着,这意味着我们需要把margin和spacing设置为1。
一旦你选择ok,你将会看到Tilesets窗口中显示了一些tiles。现在,你可以制作地图了!在Tilesets小窗口,选择一个tile,然后再在地图上的任意位置单击,你就会看到你选中的tile出现在点中的地方了。
因此,继续制作地图吧---充分发挥你的聪明才智!确保增加至少一对建筑物在地图上,因为后面我们需要一些东西来做碰撞。
记住一些方便的快捷方式:
你可以在Tileset拾取器中拖出一个方框,一次选取多个tile。
你可以使用工具栏上的“Bucket Fill Tools”按钮(就是一个桶那个)来基于一个基准tile绘制整个地图。
你可以使用“View\Zoom In...”和“View\Zoom out...”来放大和缩小地图。
一旦你完成了地图的绘制工作,在Layers选项卡的层上面双击(现在可以说是“Layer1”),然后重命名为“Background”。然后点击“File\Save”并且保存文件到你的工程的资源文件夹中,并且命名为“TileMap.tmx”。
后面我们将会使用这个tmx来做一些有趣的事情,好了,让我们把地图加载到游戏中去吧!
把tile地图添加到Cocos2d-x的场景中
打开HelloWorldScene.h,然后添加一些成员变量:
cpp
// Replace the init method with the following
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
std::string file = "TileMap.tmx";
auto str = String::createWithContentsOfFile(FileUtils::getInstance()-fullPathForFilename(file.c_str()).c_str());
_tileMap = TMXTiledMap::createWithXML(str-getCString(),"");
_background = _tileMap-layerNamed("Background");
addChild(_tileMap, -1);
return true;
}
这里,我们调用TMXTiledMap类的一些方法,把我们刚刚创建的地图文件加载进去。
急求一个用C语言或C++制作的塔防游戏代码
#includestdio.h
#includestring.h
#includemalloc.h
#includestdlib.h
#define PLACE_OF_LA D:\\data1.txt
#define PLACE_OF_LB D:\\data2.txt
#define LEN_OF_LA 6
#define LEN_OF_LB 3
#define LEN_OF_LC LEN_OF_LA+LEN_OF_LB
typedef struct elem{
int id;
char name[12];
}ElemType,*TpList;
typedef struct seqlist{
TpList list;
int num;
char *place;
}TSeqList,*pTSeqList;
TpList list_init(int num);
void list_read(pTSeqList p);
void list_sort(TpList p,int len);
TpList list_init(int num)
{
TpList p=(TpList)malloc(sizeof(ElemType)*num);
if(!p)
{
printf("Fail!");
exit(0);
}
return p;
}
void list_read(pTSeqList p)
{
int i;
FILE *pData=NULL;
if((pData=fopen("p-place","r"))==NULL)
{
printf("fail to open!");
return;
}
for(i=0;ip-num;i++)
{
if(fscanf(pData,"%d",(((p-list)+i)-id))==EOF)
{
printf("fail to read!");
return ;
}
if(fscanf(pData,"%s",(((p-list)+i)-name))==EOF)
{
printf("fail to read!");
return ;
}
}
fclose(pData);
return ;
}
void list_sort(TpList p,int len)
{
int i,j,id;
char *temp;
for(i=0;ilen-1;i++)
{
for(j=i;jlen;j++)
{
if((p+i)-id(p+j)-id)
{
id=(p+i)-id;
(p+i)-id=(p+j)-id;
(p+j)-id=id;
strcpy(temp,(p+i)-name);
strcpy((p+i)-name,(p+j)-name);
strcpy((p+j)-name,(p+i)-name);
}
}
}
return ;
}
int main()
{
int i;
pTSeqList pa,pb;
TpList pc;
pa-num=LEN_OF_LA;
pb-num=LEN_OF_LB;
pa-place="PLACE_OF_LA";
pb-place="PLACE_OF_LB";
pa-list=list_init(pa-num);
pb-list=list_init(pb-num);
pc=list_init(LEN_OF_LC);
list_read(pa);
list_read(pb);
for(i=0;ipa-num;i++)
{
pc[i].id=(pa-list)[i].id;
strcpy(pc[i].name,(pa-list)[i].name);
}
for(i=0;ipa-num;i++)
{
(pc+i+pa-num)-id=((pb-list)+i)-id;
strcpy((pc+i+pa-num)-name,((pb-list)+i)-name);
}
list_sort(pc,LEN_OF_LC);
printf("id name");
for(i=0;iLEN_OF_LC;i++)
{
printf("%d\t",pc[i].id);
printf("%s\n",pc[i].name);
}
free(pa);
free(pb);
free(pc);
return 0;
}
C语言大一新生设计简易塔防游戏,想实现绘制路线的目的,想通过键盘上的横线和竖线实现如图的效果,结果
绘制的话,当然现在说的是c语言的debug调试窗口的方法,等到后面学到其它编程就可以用面向对象的方法了
好了,先说这个,,如果是用printf绘图,那么你把你地图放到一个二维数组里面,两级for循环打印就行了
清除就用system("cls");
包含头文件windows.h
键盘的调用,既然是简单的话,就用getchar或者是scanf来输入
如果是没有按键就要执行的操作,就用while(!kbhit){}贪吃蛇一般就用这个东西,因为没有按键按下的时候,程序还是一样要运行,不能一直等到用户的按键
其余,百度
如何用Adobe Flash CS6制作简单塔防游戏?
先把需要的素材整理好 。 例如 塔防精灵 怪物精灵 游戏地图 等
都做好之后开始写代码 例如 要有精灵类这个类是基类 之后有两个扩展类一个是塔防精灵 另一个是怪物精灵 还有有地图类 控制类 根据需要在添加。
如何制作一个塔防游戏
提醒大家:这绝对不是一篇cocos2d的入门教程,而是对入门后的朋友提供的关于具体类型游戏的开发指导。如果你还不懂ios开发基础,也不懂cocos2d,建议先去看看入门的教程再说,否则你会很头疼的。另外,这里所采用的案例是类似fieldrunner或三国塔防之类的游戏,而不是植物大战僵尸那一型的。
在所有类型的休闲游戏中,塔防游戏一直是大家最喜欢的类型之一(想想植物大战僵尸,想想无数经典的塔防游戏),考虑到这类游戏的编程比较麻烦,这里我们先大概说一下塔防游戏的基本设计机制。
神马是塔防游戏:
敌人从地图的一端进入,经过某个特定的路径后最终达到目的地(通常是地图相反的一端),并偷取了你的宝物若干。当然,前提是他们活下来了。
2.玩家沿着路径放置一些防御炮塔,在敌人经过时朝他们开火。敌人一波一波的过来,同事变得越来越强大,你需要不断放置更多的防御工事,同时升级这些炮塔。
3.要赢得游戏,你得挺过20到50波的敌人,或者是无止尽的玩下去,直到你的宝物被全部偷走为止。
好吧,既然大家对塔防游戏都这么熟悉,那为什么哥还要在此唠叨,而不直接开始写源代码?淡定,淡定!为神马哥要花这些时间讲游戏机制,很简单,塔防游戏可以说是一种古董游戏类型了。如果你想让自己辛辛苦苦开发出来的游戏有人问津,恐怕不是几千几万行完美的源代码就可以解决的。所以哥得说,要嘛你别做此类游戏,如果要做的话,还是得有点创意才行。
是的,作为一个程序猿和攻城师,你的代码可以无比高效完美,但如果在游戏的创意设计方面乱七八糟,恐怕没人会对你的游戏感兴趣,甚至你自己都懒得花时间来玩一下。下面是哥认为设计塔防游戏要注意的一些元素:
想用C++做一个塔防游戏
我只知道大概可以使用Python调用C或C++写的库,最近刚刚学过python,记得有SWIG工具可以实现,具体方法不清楚,python可视化编写游戏,我用过pygame,还是比较方便的,如果要开发塔防也行,这里有一些实验的代码可以发给你。如果对python感兴趣,推荐一本python基础编程,电子版pdf我这里也有。C++中嵌入python,我没太见过,不清楚。暂时只知道这些,仅供参考。另外,对于开发塔防游戏很感兴趣,本来准备用纯python写一个的,不知道你有没有兴趣合作?