有什么好玩的c语言代码

作者&投稿:逯钟 (若有异议请与网页底部的电邮联系)
有什么好玩的C语言小程序~

一个“歼灭敌机”的小游戏,DEVc++编译通过:
#include
#include
#include
#include
#include
#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;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //打印上横框
for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //打印下横框
for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //打印左竖框
for(i=1;i<H-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;i<H-2;i++)
for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}
}
void feiji( ) //飞机移动函数
{int i,j;
for(i=21;i>=0;i--) //从底行往上是为了避免敌机直接冲出数组
for(j=0;j<22;j++)
{if(i==21&&jiem[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]==3&&jiem[21][wj]==1) death++;
}
void zidan( ) //子弹移动函数
{ int i,j;
for(i=0;i<22;i++)
for(j=0;j<22;j++)
{if(i==0&&jiem[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;i<22;i++)
for(j=0;j<22;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;i<22;i++)
for(int j=0;j<22;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(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;
case 77: if(wj<20) 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( )函数在里, srand( )函数与rand( )函数要配合用,
就是同时要用,在里。如果 rand( )%10+1 就产生1-10之中的一个数。
Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)
system("cls"); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)
这两个函数都在里。开头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语言再配上easyx插件,可以开发很多好玩的游戏哦^_^这篇博文网页链接基于easyx实现的小蓝鲸跑酷游戏,有详细开发文档和源码,也可以在这个网站上面搜索看看,还有其他很多好玩的程序源码和开发文档,一个干货满满的博客



Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

贪吃蛇小游戏

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

#include <Windows.h>

#define WIDTH 78   //地图的宽,x轴

#define HEIGHT 26  //地图的高,y轴

int dire=3;   //方向变量,初值为向“左”

int Flag=0;   //判断是否吃了食物的标志

int score=0;  //玩家得分

struct foods{ int x;

                     int y;

                  }food;  //结构体food有2个成员

struct snakes{int len;

                     int speed;

                    int x[100];

                   int y[100];

                  }snake;   //结构体snake有4个成员

 void gotoxy( int x,int y)  //控制光标移动函数

{ COORD coord;

  coord.X=x;

  coord.Y=y;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void gotoxy( int x,int y);  //以下声明要用到的几个自编函数

void csh( );

void keyDown( );

void Move( );

void putFood( );

int  Over( );

int main( )   //主函数

{ csh( );

  while(1)

   { keyDown( );

     Move( );

    putFood( );

    if(Over( ))

      {system(“cls”);

       gotoxy(WIDTH/2+1,HEIGHT/2);

       printf(“游戏结束!T__T”);

       gotoxy(WIDTH/2+1,HEIGHT/2+1);

       printf(“玩家总分:%d分”,score);

       getch( );

       break; }

      Sleep(snake.speed);

    }

  return 0;

}

 void csh( )  //初始化界面

{ int i;

gotoxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0};  //光标值设为0就隐藏了

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=WIDTH;i=i+2)  //横坐标要为偶数,因为这里要打印的字符占2个位置

  { gotoxy(i,0);  //打印上边框

   printf("■");

   gotoxy(i,HEIGHT);  //打印下边框

   printf("■"); }

  for(i=1;i<HEIGHT;i++)

   { gotoxy(0,i);    //打印左边框

    printf("■");

    gotoxy(WIDTH,i);  //打印右边框

    printf("■"); }

  while(1)

  { srand((unsigned int)time(NULL));  //设定种子为当前时间

    food.x=rand()%(WIDTH-4)+2;

    food.y=rand()%(HEIGHT-2)+1;

    if(food.x%2==0)break;

  }

  gotoxy(food.x,food.y);  //到食物坐标处打印初试食物

  printf("●");

  snake.len=3;   //蛇身长

  snake.speed=350;  //刷新蛇的时间,即是移动速度

  snake.x[0]=WIDTH/2+1;  //蛇头横坐标为偶数

  snake.y[0]=HEIGHT/2;   //蛇头纵坐标

  gotoxy(snake.x[0], snake.y[0]);  //打印蛇头

  printf("■");

 for(i=1;i<snake.len;i++)

   { snake.x[i]=snake.x[i-1]+2;

     snake.y[i]=snake.y[i-1];

     gotoxy(snake.x[i],snake.y[i]);  //打印蛇身

    printf("■"); }

   return;

}

void keyDown( )  //按键操作

{ int key;

if(kbhit( ))    //如有按键输入才执行下面操作

{ key=getch( );

if(key==224)  //值为224表示按下了方向键,下面要再次获取键值

 { key=getch( );

   if(key==72&&dire!=2)dire=1;  //72为向上

   if(key==80&&dire!=1)dire=2;  //80为向下

   if(key==75&&dire!=4)dire=3;  //75为向左

   if(key==77&&dire!=3)dire=4;  //77为向右

  }

 if(key==32)

  { while(1) if((key=getch( ))==32) break; }  //32为空格键,这儿用来暂停

 }

}

void Move( )  //蛇移动一节

{ if(Flag==0)  //如没吃食物,才执行下面操作擦掉蛇尾

  {gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);

   printf("  "); }

 int i;

 for (i = snake.len - 1; i > 0; i--)  //从蛇尾起每节存储前一节坐标值(蛇头除外)

       { snake.x[i]=snake.x[i-1];

         snake.y[i]=snake.y[i-1];

       }

 switch (dire)  //以下判断蛇头该往哪个方向移动,并获取最新坐标值

       { case 1: snake.y[0]--; break; 

         case 2: snake.y[0]++; break; 

         case 3: snake.x[0]-=2; break; 

         case 4: snake.x[0]+=2; break; 

       }

   gotoxy(snake.x[0], snake.y[0]);  //打印蛇头

  printf("■");

  if (snake.x[0] == food.x && snake.y[0] == food.y)  //如吃到食物执行以下操作

     { snake.len++; score += 50; snake.speed -= 5; Flag = 1; }

  else Flag = 0;

  if(snake.speed<160) snake.speed= snake.speed+5;  //作弊码,不让速度无限加快

}

void putFood( )  //投放食物

{ if(Flag == 1)  //如吃到食物才执行以下操作,生成另一个食物

   { while (1)

        { int i,n= 1;

         srand((unsigned)time(NULL));  //设定当前时间,接下产生食物坐标值

         food.x = rand( ) % (WIDTH - 4) + 2;

         food.y = rand( ) % (HEIGHT - 2) + 1;

         for (i = 0; i < snake.len; i++)  //随机生成的食物不能在蛇的身体上

              { if (food.x == snake.x[i] &&food.y == snake.y[i])

                { n= 0; break;}

          }

         if (n && food.x % 2 == 0) break; //n不为0且横坐标为偶数,食物坐标取值成功

        }

       gotoxy(food.x, food.y);  //光标到取得的坐标处打印食物

      printf("●");

    }

   return;

}

int Over( )  //判断游戏是否结束

{ int i;

  gotoxy(2,HEIGHT+1);  //以下打印一些其它信息

  printf(“暂停键:Enter.”);

  gotoxy(2,HEIGHT+2);

  printf(“游戏得分:%d”,score);

 if (snake.x[0] == 0 || snake.x[0] == WIDTH) return 1;  //蛇头触碰左右边界

 if (snake.y[0] == 0 || snake.y[0] == HEIGHT) return 1;  //蛇头触碰上下边界

 for (i = 1; i < snake.len; i++)

    { if (snake.x[0] == snake.x[i] && snake.y[0] == snake.y[i]) return 1; } //蛇头触碰自身

return 0;

}



hello world!


有什么适合MacBook的C语言编程软件?
适合MacBook的C语言编程软件:CLion。分号:在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。标识符:C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 开始,后跟零个或多个字母、下划线和数字。编译就会用字符的颜色...

C语言—入门技巧大学生推荐
C语言入门技巧亲测推荐 技巧1: 不要使用“GOTO”语句 编程语言终究开始引入了函数的概念,即允许程序对代码进行断行。如果已经完成,不再使用goto语句来表示代码的断行。函数调用后,函数将回到下一条指令。 只要看到或想到qoto语句,就会让软件工程师退缩,产生本能 的厌恶。其中一个主要的原因是,一个遍布goto语句的程...

有什么c语言编程软件像Java用的eclipse那样,具有代码补全,语法错误提示...
大把的,windows下 visual studio, subime text, codeblock, eclipse CDT, QT,还有好多,linux下,KDevelop, QT, subime text, eclipse CDT, vim如果你会配置也一样的,codeblock等等,

c语言max的c语言代码是什么?
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}

一个计算器的C语言代码我不知道什么意思求每一句代码的注释
include include \/\/头文件的包含 int main(void){\/\/主函数,返回值是int整型,参数为空 int choice;\/\/选择 double a,result;\/\/a用来存放输入的值,result存放计算结果 while (1){\/\/一个死循环,为了让程序可以进行多次运算 result = 0.0;\/\/存放结果变量的初始化 printf("(1.加 2.减 3.乘 ...

跪求用C语言编写小游戏的源代码,不管什么小游戏,源代码简单些,200行...
你好!怎样俄罗斯方块的游戏,可以控制速度,显示分数,你看看吧

C语言中的迭代法
enochwills 采纳率:62% 擅长: C\/C++ 其他回答 哎,这个人的回答这么经典,我都看明白了!。。。迭代就是一次一次的带数值计算,缩小范围,然后确定最后数字是多少啊! sunqian91 | 发布于2012-05-23 举报| 评论 4 0 为您推荐: matlab雅克比迭代法 c语言用迭代法的例题 matlab简单迭代法 sor迭代法 ...

请描述一下一个简单的C语言源程序代码都包括哪些?
您好,很高兴回答您的问题。在C语言中,无论是什么样程度的代码程序,都包含有以下几个方面:宏定义(或者包含的头文件,视情况而定)函数返回值类型 主函数(类型 变量){变量定义或者初始化;输入语句;计算语句;输出语句;} 函数返回值类型 函数名(类型 变量,类型 变量,。。。)(自定义...

C语言怎么学
很宽泛的一个概念。我就按我的经历来说。先是看书,那种最基础的书籍,最多只看三天。弄清楚C语言的基本语法,基本句式结构就行了。然后就是,敲代码。学习C语言就是靠的代码的累计。至于敲什么代码,可以像是水仙花数之类很经典的题目。敲的差不多了,就可以去做一些好玩儿的东西了,可以写个贪吃蛇...

C语言代码是什么
c语言是一门编程语言,c语言代码就是由c语言编写的程序

清河区13374675762: 谁有c语言一些运行起来结果很好玩的程序的代码.. -
金祝锐宁: /*太大了估计你不想要,给你一个扫雷程序,turbo C下才能编译成功 空格:打标记 回车:扫雷 方向键:改变方向 */ #include #include #include void adjust(int*,int*); int a[23][23],c[22][22],mm,nn; int roundmine(int,int); void spread(); main() { int i,j,b[...

清河区13374675762: 很6很好玩的短小c语言程序! -
金祝锐宁: 视频教程自己去学《C语言也能干大事》,超级玛丽,吃金币,飞机大战,网站开发

清河区13374675762: 谁有一些简单小游戏的C语言程序? -
金祝锐宁: 可以学写“贪吃蛇”代码:#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>#include <Windows.h>#define W 78 //游戏框的宽,x轴#define H 26 //游戏框的高,y轴 int dir=3; //方向变量,初值3表示向“左” int Flag=0; ...

清河区13374675762: 有什么好玩的c语言代码 -
金祝锐宁: Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等.

清河区13374675762: 用C语言设计一个有趣的程序 -
金祝锐宁: #include<stdio.h> int main(void) { printf(\"Hello World!\"); return 0; }

清河区13374675762: 急需一个C语言编译的有趣的程序 -
金祝锐宁: 以前写的一个,测试时可以用2000作为测试数据: #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h> int main( int argc, char *argv[] ) { int i, j, k, n = 0, temp; char s[20][81];printf( "请输入数字雨落下的时间(单位:0.1秒...

清河区13374675762: c语言:猜数字游戏代码 -
金祝锐宁: #include<stdio.h> #include<stdlib.h> #include<time.h>int main() {int num,n,i,cnt=0,finish=0;srand((unsigned int)time(NULL));num=rand()%100;printf("请猜数字,0~100之间\n");do{scanf("%d",&i);cnt++;if(i<0&&i>=100){printf("...

清河区13374675762: 求一些用C语言编写的有趣程序 -
金祝锐宁: 用vc就可以,它是专门做工程的,兼容C语言和C++,TC2.0是C语言的集成编译环境软件

清河区13374675762: 用c语言可以写什么有趣的东西. -
金祝锐宁: C语言可以做的东西其实是很多的,但是国内大学教材一般都是只简单介绍了C的语法规则之类的.用C可以搞嵌入式开发,系统开发,游戏开发…….

清河区13374675762: 一个有趣的c语言程序,是不是高手都进来看看啊 -
金祝锐宁: #include int main(int argc, char* argv[]) { int i, count = 0; int maxNum = 147 + 1; // 每隔7s,21次,共耗时147秒 int arr[147 + 1]; for (i = 0; i < maxNum; i++) { arr[i] = 0; } for (i = 0; i < 5*21; i += 5) { arr[i] = 1; } for (i = 0; i < 6*21; i += 6) { arr[i] = 1; } for (i = ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网