×

编程一个最简单游戏代码塔防游戏

编程一个最简单游戏代码塔防游戏(python塔防游戏代码)

hacker hacker 发表于2022-07-01 07:39:26 浏览17 评论1

1人参与发表评论

本文目录一览:

如何使用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写一个的,不知道你有没有兴趣合作?

群贤毕至

访客
蓝殇颜于 蓝殇颜于2022-07-01 09:49:03 | 回复 想把它放在这里,余下的事情会变得更容易。一些额外的“特殊”的tile,我将会在后面加以说明。一旦你获得了这些资源,解压并把它拖到你的工程的“Resources”分组下面。(编者的话:上面的音频资源都被编者转成了mp3格式)如