c++一些好玩的代码(c++烟花代码简单)

本篇文章给大家谈谈c++一些好玩的代码,以及c++烟花代码简单对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c语言小游戏代码

最基础的贪吃蛇的代码

#includestdio.h

#include庆搏windows.h//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。

#includeconio.h //用户通过按键盘产生的对应操作 (控制台)

#includestdlib.h

#includetime.h //日期和时间头文件

#define LEN 30

#define WID 25

int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位

char Sna_Hea_Dir = 'a';//记录蛇头的移动方向

int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置

int Snake_Len = 3;//记录蛇的长度

clock_t Now_Time;//记录当前时间,以便自动移动

int Wait_Time ;//记录自动移动的时间间隔

int Eat_Apple = 1;//吃到苹果表示为1

int Level ;

int All_Score = -1;

int Apple_Num = -1;

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 windows.h

//句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控,

void gotoxy(int x, int y)//设置光标位置

{

COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS

SetConsoleCursorPosition(hConsole, pos); //定位光标位置的函数windows.h

}

void Hide_Cursor()//隐藏光标 固定函数

{

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(hConsole, cursor_info);

}

void SetColor(int color)//设置颜色

{

SetConsoleTextAttribute(hConsole, color);

//是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色);

}

void Print_Snake()//打印蛇头和蛇的脖子和蛇尾

{

int iy, ix, color;

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

if(Snake[ix][iy] == 1)//蛇头念差告

{

SetColor(0xf); /仔明/oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数

gotoxy(ix*2, iy);

printf("※");

}

if(Snake[ix][iy] == 2)//蛇的脖子

{

color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。

//头文件:stdlib.h

if(color == 14)

color -= rand() % 13 + 1; //变色

SetColor(color);

gotoxy(ix*2, iy);

printf("■");

}

if(Snake[ix][iy] == Snake_Len)

{

gotoxy(ix*2, iy);

SetColor(0xe);

printf("≈");

}

}

}

void Clear_Snake()//擦除贪吃蛇

{

int iy, ix;

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

gotoxy(ix*2, iy);

if(Snake[ix][iy] == Snake_Len)

printf(" ");

}

}

void Rand_Apple()//随机产生苹果

{

int ix, iy;

do

{

ix = rand() % LEN;

iy = rand() % WID;

}while(Snake[ix][iy]);

Snake[ix][iy] = -1;

gotoxy(ix*2, iy);

printf("⊙");

Eat_Apple = 0;

}

void Game_Over()//蛇死掉了

{

gotoxy(30, 10);

printf("Game Over");

Sleep(3000);

system("pause nul");

exit(0);

}

void Move_Snake()//让蛇动起来

{

int ix, iy;

for(ix = 0; ix LEN; ++ix)//先标记蛇头

for(iy = 0; iy WID; ++iy)

if(Snake[ix][iy] == 1)

{

switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头

{

case 'w':

if(iy == 0)

Game_Over();

else

Sna_Hea_Y = iy - 1;

Sna_Hea_X = ix;

break;

case 's':

if(iy == (WID -1))

Game_Over();

else

Sna_Hea_Y = iy + 1;

Sna_Hea_X = ix;

break;

case 'a':

if(ix == 0)

Game_Over();

else

Sna_Hea_X = ix - 1;

Sna_Hea_Y = iy;

break;

case 'd':

if(ix == (LEN - 1))

Game_Over();

else

Sna_Hea_X = ix + 1;

Sna_Hea_Y = iy;

break;

default:

break;

}

}

if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)

Game_Over();

if(Snake[Sna_Hea_X][Sna_Hea_Y] 0)//吃到苹果

{

++Snake_Len;

Eat_Apple = 1;

}

for(ix = 0; ix LEN; ++ix)//处理蛇尾

for(iy = 0; iy WID; ++iy)

{

if(Snake[ix][iy] 0)

{

if(Snake[ix][iy] != Snake_Len)

Snake[ix][iy] += 1;

else

Snake[ix][iy] = 0;

}

}

Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头

}

void Get_Input()//控制蛇的移动方向

{

if(kbhit())

{

switch(getch())

{

case 87:

Sna_Hea_Dir = 'w';

break;

case 83:

Sna_Hea_Dir = 's';

break;

case 65:

Sna_Hea_Dir = 'a';

break;

case 68:

Sna_Hea_Dir = 'd';

break;

default:

break;

}

}

if(clock() - Now_Time = Wait_Time)//蛇到时间自动行走

{

Clear_Snake();

Move_Snake();

Print_Snake();

Now_Time = clock();

}

}

void Init()//初始化

{

system("title 贪吃毛毛蛇");

system("mode con: cols=80 lines=25");

Hide_Cursor();

gotoxy(61, 4);

printf("You Score:");

gotoxy(61, 6);

printf("You Level:");

gotoxy(61, 8);

printf("The Lenght:");

gotoxy(61, 10);

printf("The Speed:");

gotoxy(61, 12);

printf("Apple Num:");

int i;

for(i = 0; i Snake_Len; ++i)//生成蛇

Snake[10+i][15] = i+1;

int iy, ix;//打印蛇

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

if(Snake[ix][iy])

{

SetColor(Snake[ix][iy]);

gotoxy(ix*2, iy);

printf("■");

}

}

}

void Pri_News()//打印信息

{

SetColor(0xe);

gotoxy(73,4);

All_Score += Level;

printf("%3d", All_Score);

gotoxy(73, 6);

printf("%3d", Level);

gotoxy(73, 8);

printf("%3d",Snake_Len);

gotoxy(73, 10);

printf("0.%3ds", Wait_Time/10);

gotoxy(73, 12);

printf("%d", Apple_Num);

}

void Lev_Sys()//等级系统

{

if(((Apple_Num-1) / 10) == Level)

{

++Level;

if(Wait_Time 50)

Wait_Time -= 50;

else

if(Wait_Time 10)

Wait_Time -= 10;

else

Wait_Time -= 1;

}

}

int main(void)

{

Init();

srand((unsigned)time(NULL));//设置随机数的种子

Now_Time = clock();

int speed1=1000,speed2,a;

printf("\n");

printf("请输入你想要的速度\n");

scanf("%d",speed2);

Level=1;

Wait_Time=speed1-speed2;

printf("请输入你想要的苹果数\n");

scanf("%d",a);

while(a--)

Rand_Apple();

while(1)

{

if(Eat_Apple)

{

++Apple_Num;

Rand_Apple();

Lev_Sys();

Pri_News();

}

Get_Input();

Sleep(10);

}

return 0;

}

[img]

用C语言编写的小游戏代码是什么?

/*也不知道你是什么级带滚别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。蠢猛余祝你知键好运*/\x0d\x0a/*贪吃蛇*/\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0aint head=3 ,tail=0;\x0d\x0aint main()\x0d\x0a{\x0d\x0aint i,j,k=0;\x0d\x0aint zuobiao[2][80];\x0d\x0along start;\x0d\x0aint direction=77;\x0d\x0aint gamespeed;\x0d\x0aint timeover;\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\x0azuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;\x0d\x0a/*处理棋盘*/\x0d\x0achar qipan[20][80];//定义棋盘\x0d\x0afor(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盘\x0d\x0afor(i=0;iqipan[0][i]='_';\x0d\x0afor(i=0;iqipan[i][0]='|';\x0d\x0afor(i=0;iqipan[i][79]='|';\x0d\x0afor(i=0;iqipan[19][i]='_';\x0d\x0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置\x0d\x0aqipan[1][4]='#';\x0d\x0aprintf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");\x0d\x0aprintf("Input your game speed,please.(e.g.300)\n");\x0d\x0ascanf("%d",gamespeed);\x0d\x0a\x0d\x0awhile(direction!='q')\x0d\x0a{\x0d\x0asystem("cls");\x0d\x0afor(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);\x0d\x0atimeover=1;\x0d\x0astart=clock();\x0d\x0awhile(!kbhit()(timeover=clock()-startif(timeover)\x0d\x0a{\x0d\x0agetch();\x0d\x0adirection=getch();\x0d\x0a}\x0d\x0aelse\x0d\x0adirection=direction;\x0d\x0aif(!(direction==72||direction==80||direction==75||direction==77))\x0d\x0a{\x0d\x0areturn 0;\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0aif(!change(qipan,zuobiao,direction))\x0d\x0a{\x0d\x0adirection='q';\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\x0a{\x0d\x0aint x,y;\x0d\x0aif(direction==72)\x0d\x0ax=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\x0aif(direction==80)\x0d\x0ax=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\x0aif(direction==75)\x0d\x0ax=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\x0aif(direction==77)\x0d\x0ax=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\x0aif(x==0||x==18||y==78||y==0)\x0d\x0areturn 0;\x0d\x0aif(qipan[x][y]!=' ')\x0d\x0areturn 0;\x0d\x0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';\x0d\x0atail=(tail+1)%80;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*';\x0d\x0ahead=(head+1)%80;\x0d\x0azuobiao[0][head]=x;\x0d\x0azuobiao[1][head]=y;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#';\x0d\x0areturn 1;\x0d\x0a}

能不能介绍点C语言编程的小游戏,例如贪吃蛇,。。好玩点的。要有代码,谢谢了

可以学写“俄罗斯方块”代码:

#include stdio.h

#include conio.h

#include time.h

#include windows.h

#define  ZL  4    //坐标增量, 不使游戏窗口靠边

#define W  36   //游戏窗口的宽度

#define H  20   //游戏窗口的高度

int i,j,Ta,Tb,Tc;     // Ta,Tb,Tc用于记住和转换方块变量的值

int a[60][60]={0};   //标记游戏屏幕各坐标点:0,1,2分别为空、方块、边框

int b[4];       //标记4个"口"方块:1有,0无,类似开关

int x,y, level,score,speed;   //方块中心位置的x,y坐标,游戏等级、得分和游戏速度

int flag,next;   //当前要操作旁扮改的方块类型序号,下一个方块类型序号

void gtxy(int m, int n);  //以下声明要用到的自编函数

void setColor(unsigned short p, unsigned short q); //设定显示颜色

void gflag( );  //获得下一方块类型的序号

void csh( );   //初始化界面

void start( );  //开始部分

void prfk ( );   //打印方块

void clfk( );   //清除方块

void mkfk( );  //制作方块

void keyD( );  //按键操作

int  ifmov( );  //判断能否移动

void clHA( );  //清除满行的方块

void clNEXT( );  //清除边框外的NEXT方块

int main( )

{ csh( );

  while(1)

    { start( );

      while(1)

      { setColor(5, 0);

         prfk( );   Sleep(speed);  clfk( );

         Tb=x;Tc=flag;  //临存当前x坐标和序号,以备撤销操作

         keyD( );

         y++;     //方块向下移动

         if (ifmov( )==0) { y--; setColor(2, 0);prfk( ); clHA( ); break;} //不可动时的操作

       }

    for(i=y-2;iy+2;i++){ if (i==ZL) { j=0; } }  //方块触到框顶缺岁

     if (j==0) {  system("运判cls");gtxy(10,10); setColor(6, 0);

                       printf("游戏结束!"); getch(); break;  }

     clNEXT( );  

    }

  return 0;

}

void gtxy(int m, int n)  //控制光标移动

{COORD pos;  //定义变量

pos.X = m;  //横坐标

pos.Y = n;   //纵坐标

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); //获得显示器句柄

}

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);

}

void csh( )    //初始化界面

{gtxy(ZL+W/2-5,ZL-2); setColor(10, 0); printf("俄罗斯方块");      //打印游戏名称

gtxy(ZL+W+3,ZL+7); setColor(5, 0);printf("******* NEXT:");  //打印菜单信息

gtxy(ZL+W+3,ZL+13); setColor(5, 0);printf("************");

gtxy(ZL+W+3,ZL+15); setColor(9, 0);printf("Esc :退出游戏");

gtxy(ZL+W+3,ZL+17); setColor(9, 0);printf("↑键:变体");

gtxy(ZL+W+3,ZL+19); setColor(9, 0);printf("空格:暂停游戏");

gtxy(ZL,ZL); setColor(2, 0); printf("╔");  gtxy(ZL+W-2,ZL);  printf("╗");  //打印框角

gtxy(ZL,ZL+H); printf("╚");  gtxy(ZL+W-2,ZL+H);  printf("╝");

a[ZL][ZL+H]=2;  a[ZL+W-2][ZL+H]=2;  //记住有图案

for(i=2;iW-2;i+=2) {gtxy(ZL+i,ZL);  printf("═"); }  //打印上横框

for(i=2;iW-2;i+=2) {gtxy(ZL+i,ZL+H); printf("═"); a[ZL+i][ZL+H]=2; } //打印下横框有图案

for(i=1;iH;i++) { gtxy(ZL,ZL+i);  printf("║"); a[ZL][ZL+i]=2; }  //打印左竖框记住有图案

for(i=1;iH;i++) {gtxy(ZL+W-2,ZL+i); printf("║"); a[ZL+W-2][ZL+i]=2; } //打印右竖框有图案

CONSOLE_CURSOR_INFO cursor_info={1,0};   //以下是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);

level=1; score=0; speed=400;

gflag( );  flag=next;  //获得一个当前方块序号

}

void gflag( )  //获得下一个方块类型的序号

{ srand((unsigned)time(NULL)); next = rand()%19+1; }

void start( )  //开始部分

{ gflag( );  Ta=flag;  flag=next;  //保存当前方块序号,将下一方块序号临时操作

x=ZL+W+6; y=ZL+10; setColor(5, 0); prfk( );  //给x,y赋值,在框外打印出下一方块

flag=Ta; x=ZL+W/2; y=ZL-1;  //取回当前方块序号,并给x,y赋值

}

void prfk ( )  //打印俄罗斯方块

{ for(i=0;i4;i++) {b[i]=1; }  //数组b[4]每个元素的值都为1

mkfk ( );  //制作俄罗斯方块

for( i= x-2; i=x+4; i+=2 )  //打印方块

{ for(j=y-2;j= y+1;j++) { if( a[i][j]==1 jZL ){ gtxy(i,j); printf("□"); } } }

gtxy(ZL+W+3,ZL+1); setColor(9, 0);  printf("level : %d",level);  //以下打印菜单信息

gtxy(ZL+W+3,ZL+3); setColor(9, 0);  printf("score : %d",score);

gtxy(ZL+W+3,ZL+5); setColor(9, 0);  printf("speed : %d",speed);

}

void clfk( )  //清除俄罗斯方块

{ for(i=0;i4;i++) { b[i]=0; }  //数组b[4]每个元素的值都为0

mkfk ( );  //制作俄罗斯方块

for( i=x-2; i=x+4; i+=2 )  //清除方块

{ for(j=y-2;j=y+1;j++){ if( a[i][j]==0 jZL ){ gtxy(i,j); printf("  "); } } }

}

void mkfk( )  //制作俄罗斯方块

{ a[x][ y]=b[0];  //方块中心位置状态: 1-有,0-无

switch(flag)   //共6大类,19种小类型

{ case 1: { a[x][y-1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }  //田字方块

case 2: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x+4][y]=b[3]; break; }  //直线方块:----

case 3: { a[x][y-1]=b[1]; a[x][y-2]=b[2]; a[x][y+1]=b[3]; break; }  //直线方块: |

case 4: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x][y+1]=b[3]; break; }  //T字方块

case 5: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y]=b[3]; break; }  //T字顺时针转90度

case 6: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x+2][y]=b[3]; break; }  //T字顺转180度

case 7: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y]=b[3]; break; }  //T字顺转270度

case 8: { a[x][y+1]=b[1]; a[x-2][y]=b[2]; a[x+2][y+1]=b[3]; break; } //Z字方块

case 9: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x-2][y+1]=b[3]; break; }  //Z字顺转90度

case 10: { a[x][y-1]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }  //Z字顺转180度

case 11: { a[x][y+1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][ y]=b[3]; break; } //Z字顺转270度

case 12: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y-1]=b[3]; break; }  //7字方块

case 13: {a[x-2][y]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }  //7字顺转90度

case 14: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y+1]=b[3]; break; }  //7字顺转180度

case 15: { a[x-2][y]=b[1]; a[x-2][y+1]=b[2]; a[x+2][y]=b[3]; break; }  //7字顺转270度

case 16: { a[x][y+1]=b[1]; a[x][y-1]=b[2]; a[x+2][y-1]=b[3]; break; }  //倒7字方块

case 17: { a[x-2][y]=b[1]; a[x+2][y+1]=b[2]; a[x+2][y]=b[3]; break; }  //倒7字顺转90度

case 18: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y+1]=b[3]; break; }  //倒7字顺转180度

case 19: { a[x-2][y]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }  //倒7字顺转270度

}

}

void keyD( )  //按键操作

{ if (kbhit( ))  

{ int key;

key=getch();

if (key==224)

{ key=getch();

if (key==75) { x-=2; }  //按下左方向键,中心横坐标减2

if (key==77) { x+=2; }  //按下右方向键,中心横坐标加2

if (key==72)     //按下向上方向键,方块变体

      { if (flag=2 flag=3 ) { flag++; flag%=2; flag+=2; }

       if ( flag=4 flag=7 ) { flag++; flag%=4; flag+=4; }

      if (flag=8 flag=11 ) { flag++; flag%=4; flag+=8; }

      if (flag=12 flag=15 ) { flag++; flag%=4; flag+=12; }

      if ( flag=16 flag=19 ) { flag++; flag%=4; flag+=16; } }

 }

if (key==32)     //按空格键,暂停

    { setColor(5, 0);prfk( ); while(1) { if (getch( )==32) { clfk( );break;} } } //再按空格键,继续游戏

 if (ifmov( )==0) { x=Tb; flag=Tc; } //如果不可动,撤销上面操作

  else { setColor(5, 0); prfk( ); Sleep(speed); clfk( ); Tb=x;Tc=flag;} //如果可动,执行操作

}

}

int ifmov( )   //判断能否移动

{ if (a[x][y]!=0) { return 0; }  //方块中心处有图案返回0,不可移动

else{ if ( (flag==1 ( a[x][ y-1]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||  //田字方块

 (flag==2 ( a[x-2][y]==0 a[x+2][y]==0 a[x+4][y]==0 ) ) ||  //以下为其它方块

     (flag==3 ( a[x][y-1]==0 a[x][y-2]==0 a[x][y+1]==0 ) ) ||

     (flag==4 ( a[x-2][y]==0 a[x+2][y]==0 a[x][y+1]==0 ) ) ||

     (flag==5 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y]==0 ) ) ||

     (flag==6 ( a[x][ y-1]==0 a[x-2][y]==0 a[x+2][y]==0 ) ) ||

     (flag==7 ( a[x][y-1]==0 a[x][y+1]==0 a[x+2][y]==0 ) ) ||

    (flag==8 ( a[x][y+1]==0 a[x-2][y]==0 a[x+2][y+1]==0 ) ) ||

    (flag==9 ( a[x][y-1]==0 a[x-2][y]==0 a[x-2][y+1]==0 ) ) ||

     (flag==10 ( a[x][y-1]==0 a[x-2][y-1]==0 a[x+2][y]==0 ) ) ||

     (flag==11 ( a[x][y+1]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||

    (flag==12 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y-1]==0 ) ) ||

( flag==13 ( a[x-2][y]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||

    ( flag==14 ( a[x][y-1]==0 a[x][y+1]==0 a[x+2][y+1]==0 ) ) ||

(flag==15 ( a[x-2][y]==0 a[x-2][y+1]==0 a[x+2][y]==0 ) ) ||

(flag==16 ( a[x][y+1]==0 a[x][y-1]==0 a[x+2][y-1]==0 ) ) ||

( flag==17 ( a[x-2][y]==0 a[x+2][y+1]==0 a[x+2][y]==0 ) ) ||

    (flag==18 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y+1]==0 ) ) ||

    (flag==19 ( a[x-2][y]==0 a[x-2][y-1]==0 a[x+2][y]==0 ) ) ) { return 1; }

}

return 0;  //其它情况返回0

}

void clNEXT( )  //清除边框外的NEXT方块

{ flag = next;  x=ZL+W+6;  y=ZL+10;  clfk( ); }

void clHA( )  //清除满行的方块

{ int k, Hang=0;   //k是某行方块个数, Hang是删除的方块行数

for(j=ZL+H-1;j=ZL+1;j--)  //当某行有W/2-2个方块时,则为满行

{ k=0; for(i=ZL+2;iZL+W-2;i+=2)

  { if (a[i][j]==1)   //竖坐标从下往上,横坐标由左至右依次判断是否满行

  { k++;  //下面将操作删除行

if (k==W/2-2) { for(k=ZL+2;kZL+W-2;k+=2) { a[k][j]=0; gtxy(k,j); printf("  "); Sleep(1); }

    for(k=j-1;kZL;k--)

     { for(i=ZL+2;iZL+W-2;i+=2)  //已删行数的上面有方块,先清除再全部下移一行

      { if(a[i][k]==1) { a[i][k]=0; gtxy(i,k); printf("  ");a[i][k+1]=1; gtxy(i,k+1);

setColor(2, 0); printf("□"); } }

      }

     j++;     //方块下移后,重新判断删除行是否满行

    Hang++;  //记录删除方块的行数

    }

   }

   }

}

score+=100*Hang;  //每删除一行,得100分

if ( Hang0 (score%500==0 || score/500 level-1 ) )  //满500分速度加快,升一级

{ speed-=20; level++; if(speed200)speed+=20;}

}

有什么好玩的C语言小程序

一个“歼灭敌机”的小游戏,DEVc++编译通过:

#include stdio.h

#include conio.h

#include stdlib.h

#include windows.h

#include time.h

#define zlx 10  //增量坐标(x)让游戏框不靠边

#define zly 3   //增量坐标(y)让游戏框不靠边

#define W 26  //游戏框的宽度

#define H 24  //游竖唯戏框的高度

int jiem[22][22]={0}, wj=10;  //界面数组, 我机位置(初值为10)

int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数

int m=0,n=0;  // m,n是控制敌机的变量

void gtxy (int x, int y)  //控制光标位置的函数

{ COORD pos;

pos.X = x;  pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color(int a)  //设定颜色的函数(a应为1-15)

{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }

void yinc(int x=1,int y=0)   //隐藏光标的函数

{ CONSOLE_CURSOR_INFO  gb={x,y};   //y设为0即隐藏

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), gb);

}

void csh( )  //初始化函数

{ int i;

Color(7);

gtxy(zlx,zly); printf("╔");  gtxy(zlx+W-2,zly); printf("╗");  //左上角和右上角的框角

gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下边两框角

for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly);  printf("═"); }      //打印上横框

for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); }  //打印下横框

for(i=1;iH-1;i++) { gtxy(zlx,zly+i);  printf("║"); }       //打印左竖框

for(i=1;iH-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); }  //打印右竖框

Color(14);gtxy(19,2); printf("歼灭敌机"); Color(10);

gtxy(37,5); printf("设置:Esc ");

gtxy(37,7); printf("发射:↑ ");

gtxy(37,9); printf("控制:← → ");

gtxy(37,11);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

yinc(1,0);

}

void qcjm( )  //清除界面函数

{int i,j;

for(i=0;iH-2;i++)

for(j=0;jW-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}

}

void feiji( )  //飞机移型腔动函数

{int i,j;

for(i=21;i=0;i--)  //从底行往上是为了避免敌机直接冲出数组

  for(j=0;j22;j++)

     {if(i==21jiem[i][j]==3) jiem[i][j]=0;  //底行赋值0 以卜纤衫免越界

       if(jiem[i][j]==3) jiem[i][j]=0, jiem[i+1][j]=3;

     }

if(jiem[20][wj]==3jiem[21][wj]==1) death++;

}

void zidan( )  //子弹移动函数

{ int i,j;

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

  for(j=0;j22;j++)

     {if(i==0jiem[i][j]==2) jiem[i][j]=0;

     if(jiem[i][j]==2) { if(jiem[i-1][j]==3) score+=100,printf("\7");

                                 jiem[i][j]=0,jiem[i-1][j]=2; }

     }

}

void print(  )  //输出界面函数

{int i,j;

qcjm( );

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

for(j=0;j22;j++)

{ gtxy(12+j,4+i);

if(jiem[i][j]==3) {Color(13);printf("□");}

if(jiem[i][j]==2) {Color(10);printf(".");}

if(jiem[i][j]==1) {Color(10);printf("■");}

}

gtxy(37,11); Color(10);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

}

void setting( )  //游戏设置函数

{ qcjm( );

gtxy(12,4);printf("选择敌机速度:");

gtxy(12,5);printf("  1.快 2.中 3.慢");

switch(getche( ))

    {case '1': speed=2; break;

     case '2': speed=4; break;

     case '3': speed=5; break;

     default: gtxy(12,6);printf("  错误!默认值");

   }

gtxy(12,7);printf("选择敌机密度:");

gtxy(12,8);printf("  1.大 2.中 3.小");

switch(getche( ))

     {case '1': density=20; break;

case '2': density=30; break;

case '3': density=40; break;

     default: gtxy(12,9);printf("  错误!默认值");

     }

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

 for(int j=0;j22;j++)jiem[i][j]=0;

jiem[21][wj=10]=1; jiem[0][5]=3;

gtxy(12,10);printf("  按任意键保存...");

getch( );

qcjm( );

}

void run( )  //游戏运行函数

{ jiem[21][wj]=1;  //值为1代表我机(2则为子弹)

jiem[0][5]=3;   //值为3代表敌机

SetConsoleTitle("歼灭敌机");  //设置窗口标题

while(1)

{ if (kbhit( ))  //如有键按下,控制我机左右移动、发射或进行设定

     {int key;

      if((key=getch( ))==224) key=getch( );

      switch(key)

      { case 75: if(wj0) jiem[21][wj]=0,jiem[21][--wj]=1; break;

        case 77: if(wj20) jiem[21][wj]=0,jiem[21][++wj]=1; break;

        case 72: jiem[20][wj]=2; break;

       case 27: setting( );

      }

   }

   if(++n%density==0)  //控制产生敌机的速度

     { n=0;srand((unsigned)time(NULL));

       jiem[0][rand( )%20+1]=3;

     }

    if(++m%speed==0) {feiji( ); m=0;}  //控制敌机移动速度(相对子弹而言)

    zidan( );

   print( );

Sleep(120);  //延时120毫秒

  }

}

int main( )

{csh( );

 run( );

 return 0;

}

新手要方便写代码,可以收藏下面几个自编函数:

SetConsoleTitle("俄罗斯方块");  //设置窗口左上角标题栏处出现"俄罗斯方块"5个字

srand( (unsigned) time(NULL) );  //初始化随机数发生器

n= rand(  ) % 20;   //产生随机数0-19中的一个. 如 rand(  )%5 就产生0-4中的一个数

SetConsoleTitle(  )函数在windows.h里, srand(  )函数与rand(  )函数要配合用,

就是同时要用,在stdlib.h里。如果 rand( )%10+1 就产生1-10之中的一个数。

Sleep(300);   //延时300毫秒(就是程序暂停300毫秒后继续运行)

system("cls");   //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)

这两个函数都在windows.h里。开头4个自编函数 编写如下:

void gtxy (int x, int y)  //控制光标位置的函数

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (int a)  //设定颜色的函数

{ SetConsoleTextAttribute ( GetStdHandle ( STD_OUTPUT_HANDLE ),a ); }

void yinc (int x,int y)   //隐藏光标的函数

{ CONSOLE_CURSOR_INFO   gb={ x , y };   //gb代表光标

SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE),  gb );

}

void kou(int w,int h)  //设置窗口大小的函数

{HANDLE  hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;

COORD  size={ w , h };

SetConsoleScreenBufferSize( hl , size );

SMALL_RECT  rc={ 0, 0, w, h };

SetConsoleWindowInfo( hl, 1, rc );

}

最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。

第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用

size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与

大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两

个参数可以小于w和h.比如 rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间

那个参数要为" 1 "或写“ true ”才有效。

有什么好玩的c语言代码

哈哈~ C语言再配上easyx插件,可以开发很多好玩的游戏哦^_^这篇博文网页链接基于easyx实现的小蓝鲸跑酷游戏,有详细开发文档和源码,也可以在这个首老悉网站上面搜索看者乎看,还有其他很多好玩的程序源码和开发文档,一个干货含御满满的博客

关于c++一些好玩的代码和c++烟花代码简单的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表