体育资讯网

您现在的位置是:首页 > 分类14 > 正文

分类14

简易unity2d游戏源码(unity2D教程)

hacker2022-07-04 12:33:18分类1484
本文目录一览:1、unity2d俄罗斯方块源码有没有给一份2、

本文目录一览:

unity2d 俄罗斯方块源码有没有给一份

第一个Cpp

#include conio.h

#include stdlib.h

#includestdio.h

#include windows.h

#include mmsystem.h

#pragma comment(lib,"winmm.lib") //播放背景音乐的头文件

#include "colorConsole.h"

#includetime.h

#define SQUARE_COLOR BACKGROUD_BLUE|BACKGROUD_RED| BACKGROUD_INTENSITY //背景颜色

#define SQUARE_COLOR FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY //方块的颜色

#define up 72

#define down 80

#define left 75

#define right 77

#define esc 27

#define MAPW 15 //地图的宽度

#define MAPH 25 //地图的高度

void initiate1();

int * build(); //创建方块 //初始化工作

BOOL isavailable(int a[],int x,int y,int w,int h); //判定是否能放下

void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors);

void delete_cache(); //清除键盘缓冲区

void revolve(int a[][4],int w,int h,int *x,int y); //转动方块

void pro();

void end();

void delete_blocks(int *a,int w,int h,int x,int y);

void gameover();

void deletefull_line(int m[][MAPW],int row,int w,int h); //消除一行

int dx=30,dy=5; //屏幕上的偏移量

int score=0,level=0;

int map[MAPH][MAPW];

int a1[4][4]={{1},{1,1,1}};

int a2[4][4]={{0,1},{1,1,1}};

int a3[4][4]={{1,1},{0,1,1}};

int a4[4][4]={{0,0,1},{1,1,1}};

int a5[4][4]={{0,1,1},{1,1}};

int a6[4][4]={{1,1,1,1}};

int a7[4][4]={{1,1},{1,1}};

int a[4][4];

int main()

{

HANDLE handle;

handle=initiate();

WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY };

while(1)

{

sndPlaySound("Resource\\Just Dance.wav",SND_LOOP|SND_ASYNC);//用异步方式播放音乐,PlaySound函数在开始播放后立即返回

system("CLS");

int n=0;

printf("目录\n1.开始游戏\n2.退出游戏\n\n\n");

scanf("%d",n);

switch(n)

{

case 1:

system("CLS");

textout(handle,22,6,wColors+2,1,"请选择游戏等级:");

textout(handle,32,8,wColors+2,1,"1.初级");

textout(handle,32,10,wColors+2,1,"2.中级");

textout(handle,32,12,wColors+2,1,"3.高级");

while(1)

{

char choice;

choice=_getch();

if(choice=='1')

{

textout(handle,22,6,wColors+2,1,"开始游戏,初级");

textout(handle,32,8,wColors+2,1," ");

textout(handle,32,10,wColors+2,1," ");

textout(handle,32,12,wColors+2,1," ");

level=0,score=0;

Sleep(2000);

textout(handle,22,6,wColors+2,1," ");

break;

}

else if(choice=='2')

{

textout(handle,22,6,wColors+2,1,"开始游戏,中级");

textout(handle,32,8,wColors+2,1," ");

textout(handle,32,10,wColors+2,1," ");

textout(handle,32,12,wColors+2,1," ");

level=2,score=20;

Sleep(2000);

textout(handle,22,6,wColors+2,1," ");

break;

}

else if(choice=='3')

{

textout(handle,22,6,wColors+2,1,"开始游戏,高级");

textout(handle,32,8,wColors+2,1," ");

textout(handle,32,10,wColors+2,1," ");

textout(handle,32,12,wColors+2,1," ");

level=4,score=40;

Sleep(2000);

textout(handle,22,6,wColors+2,1," ");

break;

}

else if(choice!='1'choice!='2'choice!='3')

continue;

}

pro();

break;

case 2:

return 0;

default:

printf("错误,按键继续");

while(!_kbhit());

}

}

}

void pro() //游戏主题

{

initiate1();

int *b=NULL;

b=build(); //创建方块

int sign,blank,x,y;

while(1)

{

for(int i=0;i4;i++) //复制方块

for(int j=0;j4;j++)

if(a[i][j]=*(b+i*4+j)) blank=i;

y=1-blank;x=4;

delete_blocks(a[0][0],4,4,16,10);

b=build();

HANDLE handle;

handle=initiate();

WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY };

drawblocks(b,4,4,16,10,wColors,1);

wColors[0]=SQUARE_COLOR;

drawblocks(a[0][0],4,4,x,y,wColors,1);

delete_cache();

char string[5];

wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;

textout(handle,dx-10,8+dy,wColors,1,itoa(score,string,10));

textout(handle,dx-10,14+dy,wColors,1,itoa(level,string,10));

sign=1;

while(sign)

{

int delay=0,max_delay=100-10*level; //延迟量

while(delaymax_delay)

{

if(_kbhit()) //用if避免按住键使方块卡住

{

int draw=0;

int key=_getch();

switch (key)

{

case up:

delete_blocks(a[0][0],4,4,x,y);

revolve(a,4,4,x,y);

draw=1;

break;

case down:

delay=max_delay;

break;

case left:

if(isavailable(a[0][0],x-1,y,4,4))

{

delete_blocks(a[0][0],4,4,x,y);

x--;

draw=1;

}

break;

case right:

if(isavailable(a[0][0],x+1,y,4,4))

{

delete_blocks(a[0][0],4,4,x,y);

x++;

draw=1;

}

break;

case 32://32 是空格键的ASCII码,按空格键暂停

while(1)

{

textout(handle,dx,-2+dy,wColors,1,"Press any key to continue");

Sleep(200);

textout(handle,dx,-2+dy,wColors,1," ");

Sleep(200);

if(_kbhit())

{

draw=1;

break;

}

}

break;

case esc://按键退出游戏

exit(EXIT_SUCCESS);

}

if(draw)

{

HANDLE handle;

handle=initiate();

WORD wColors[1]={SQUARE_COLOR};

drawblocks(a[0][0],4,4,x,y,wColors,1);

draw=0;

}

}

_sleep(5);delay++;

}

if(isavailable(a[0][0],x,y+1,4,4)) //是否能下移

{

delete_blocks(a[0][0],4,4,x,y);

y++;

HANDLE handle;

handle=initiate();

WORD wColors[1]={SQUARE_COLOR};

drawblocks(a[0][0],4,4,x,y,wColors,1);

}

else

{

sign=0; //标记,使跳出 while(sign) 循环,产生新方块

if(y=1)

{

system("CLS");

HANDLE handle;

handle=initiate();

WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN};

textout(handle,4+dx,6+dy,wColors,1,"GAME OVER!!!");

textout(handle,4+dx,8+dy,wColors,1,"分数:");

textout(handle,10+dx,8+dy,wColors,1,itoa(score,string,10));

textout(handle,4+dx,10+dy,wColors,1,"制作者:***");

delete_cache();

exit(EXIT_SUCCESS);

} //是否结束

for(int i=0;i4;i++) //放下方块

for(int j=0;j4;j++)

if(a[i][j]((i+y)MAPH-1)((j+x)MAPW-1))

map[i+y][j+x]=a[i][j];

int full,k=0;

for( i=y;imin(y+4,MAPH-1);i++)

{

full=1;

for(int j=1;j14;j++)

if(!map[i][j]) full=0;

if(full) //消掉一行

{

deletefull_line(map,i,MAPW,MAPH);

k++;

score=score+k;

level=min(score/10,9);

}

}

}

}

}

}

void initiate1() //初始化

{

int i;

for(i=0;i25;i++)

{

map[i][0]=-2;

map[i][14]=-2;

}

for(i=0;i15;i++)

{

map[0][i]=-1;

map[24][i]=-1;

}

map[0][0]=-3;

map[0][14]=-3;

map[24][0]=-3;

map[24][14]=-3;

HANDLE handle;

handle=initiate();

WORD wColors[1]={FOREGROUND_GREEN| FOREGROUND_BLUE|FOREGROUND_INTENSITY};

textout(handle,dx-10,6+dy,wColors,1,"SCORE");

textout(handle,dx-10,12+dy,wColors,1,"LEVEL");

textout(handle,32+dx,8+dy,wColors,1,"NEXT");

wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY;

drawblocks(map[0][0],15,25,0,0,wColors,1);

textout(handle,dx,dy,wColors,1,"◎═════════════◎");

wColors[0]=FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY;

textout(handle,dx+8,dy+5,wColors,1,"按任意键开始");

wColors[0]=FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_INTENSITY ;

textout(handle,dx+7,dy-3,wColors,1,"制作者:***");

int x=_getch();

srand(time(NULL));

textout(handle,dx+8,dy+5,wColors,1," ");

}

int * build() //创建方块

{

int * a=NULL;

int c=rand()%7;

switch(c)

{

case 0:

a=a1[0][0];break;

case 1:

a=a2[0][0];break;

case 2:

a=a3[0][0];break;

case 3:

a=a4[0][0];break;

case 4:

a=a5[0][0];break;

case 5:

a=a6[0][0];break;

case 6:

a=a7[0][0];break;

}

return a;

}

void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors) //画出方块

{

HANDLE handle;

handle = initiate();

int temp;

for(int i=0;ih;i++)

for(int j=0;jw;j++)

if((temp=a[i*w+j])y+i0)

{

if(temp==-3)

{

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎");

_sleep(30);

}

else if(temp==-2)

{

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"║");

_sleep(30);

}

else if(temp==1)

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎");

else if(temp==-1)

{

textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"═");

_sleep(30);

}

}

}

void delete_cache() //清除缓冲区

{

while(_kbhit())

{

_getch();

}

}

void delete_blocks(int *a,int w,int h,int x,int y) //覆盖方块

{

HANDLE handle;

handle=initiate();

WORD wColors[1]={SQUARE_COLOR};

for(int i=0;ih;i++)

for(int j=0;jw;j++)

if(a[i*w+j]i+y0)

textout(handle,2*(x+j)+dx,y+i+dy,wColors,1," ");

}

void revolve(int a[][4],int w,int h,int *x,int y) //转动方块

{

int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};

int sign=0,line=0;

for(int i=h-1;i=0;i--)

{

for(int j=0;jw;j++)

if(a[i][j])

{

b[j][line]=a[i][j];

sign=1;

}

if(sign)

{

line++;

sign=0;

}

}

for(i=0;i4;i++)

if(isavailable(b[0][0],*x-i,y,w,h))

{

*x-=i;

for(int k=0;kh;k++)

for(int j=0;jw;j++)

a[k][j]=b[k][j];

break;

}

}

void deletefull_line(int m[][MAPW],int row,int w,int h) //消除满行的方块

{

HANDLE handle;

handle=initiate();

WORD wColors[1]={SQUARE_COLOR};

textout(handle,2+dx,row+dy,wColors,1,"﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌");

_sleep(100);

int i;

for(i=row;i1;i--)

{

delete_blocks(m[i][1],MAPW-2,1,1,i);

for(int j=1;jMAPW-1;j++)

m[i][j]=m[i-1][j];

drawblocks(m[i][1],MAPW-2,1,1,i,wColors,1);

}

for(i=1;iMAPW-1;i++)

m[1][i]=0;

}

BOOL isavailable(int a[],int x,int y,int w,int h)

{

for(int i=max(y,1);iy+h;i++)

for(int j=x;jx+w;j++)

if(map[i][j]a[w*(i-y)+j-x])

return 0;

return 1;

}

第二个cpp:

#include "colorConsole.h"

HANDLE initiate()

{

HANDLE hOutput;

hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

return hOutput;

}

BOOL textout(HANDLE hOutput,int x,int y,WORD wColors[],int nColors,LPTSTR lpszString)

{

DWORD cWritten;

BOOL fSuccess;

COORD coord;

coord.X = x; // start at first cell

coord.Y = y; // of first row

fSuccess = WriteConsoleOutputCharacter(

hOutput, // screen buffer handle

lpszString, // pointer to source string

lstrlen(lpszString), // length of string

coord, // first cell to write to

cWritten); // actual number written

if (! fSuccess)

cout"error:WriteConsoleOutputCharacter"endl;

for (;fSuccess coord.X lstrlen(lpszString)+x; coord.X += nColors)

{

fSuccess = WriteConsoleOutputAttribute(

hOutput, // screen buffer handle

wColors, // pointer to source string

nColors, // length of string

coord, // first cell to write to

cWritten); // actual number written

}

if (! fSuccess)

cout"error:WriteConsoleOutputAttribute"endl;

return 0;

}

Unity3D做一个2D横屏的游戏,求主角跳跃的代码要怎么写

简易unity2d游戏源码我这里只介绍把人物想象成一个质点简易unity2d游戏源码的向上跳动简易unity2d游戏源码,不考虑他的动作变化。这属于物理引擎部分,模拟一下竖直上抛运动。x方向速度为0,y方向出速度很大,储存这个变量,然后位移是一个变量,每个时间点减小恒定的速度,位移增加速度那个变量的大小,图片位置根据位移变量移动。

unity2d游戏源码怎么打开

我认为用Unity开发2D游戏最大的优势是,Unity作为一款游戏引擎已经提供了比较完善的底层基础游戏功能模块,例如碰撞检测和物理模拟,而要用到这些功能是必须用“方法1”的,Unity目前内建的二维渲染机制(无论是GUITexture还是UnityGUI)都不能享受到上述福利。而且最关键的是,使用Unity做三维渲染的效率比二维渲染快多了(同等二维画面复杂程度)。

为了享受游戏引擎的丰富功能以及更快更好的渲染效果,请用方法1。Unity到目前为止,GUI就是鸡肋中的鸡肋,所以很多二维界面效果反而不得不动用三维渲染,期待3.5版更新吧。

发表评论

评论列表

  • 萌懂折奉(2022-07-04 23:44:07)回复取消回复

    } } } }}void initiate1() //初始化{ int i; for(i=0;i25;i++) { map[i][0]=-2; map[i][14]=-2; } for(i=0;i15;i++) { map[0][i]=-1; map[24][i]=-1

  • 野欢怙棘(2022-07-04 21:38:23)回复取消回复

    (isavailable(a[0][0],x,y+1,4,4)) //是否能下移 { delete_blocks(a[0][0],4,4,x,y); y++; HANDLE handle;

  • 假欢绣羽(2022-07-05 00:29:22)回复取消回复

    "); textout(handle,32,10,wColors+2,1," "); textout(handle,32,12,wColors+2,1," ");

  • 辙弃羁客(2022-07-04 13:23:49)回复取消回复

    } map[0][0]=-3; map[0][14]=-3; map[24][0]=-3; map[24][14]=-3; HANDLE handle; handl

  • 蓝殇心児(2022-07-04 18:55:08)回复取消回复

    t(handle,dx-10,6+dy,wColors,1,"SCORE"); textout(handle,dx-10,12+dy,wColors,1,"LEVEL"); text