当前位置: 首页 手游资讯 手游资讯

C语言编写小游戏代码,c语言编写小游戏代码的软件

一、c语言猜数字游戏源代码

小游戏2048:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<windows.h>

int jsk();//计算空格数

void rsgm();//重置游戏

void inkey();//按键输入

void left();//向左移动

void right();//向右移动

void up();//向上移动

void down();//向下移动

void show();//输出界面

void adnum();//添加随机数

void yes();//游戏是否结束(1是0否)

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

int a[4][4];//存储16个格子中的数字

int score= 0;//每局得分

int best= 0;//最高得分

int ifnum;//是否需要添加数字(1是0否)

int over;//游戏结束标志(1是0否)

int i,j,k;

int main()

{ rsgm();//重置游戏

inkey();//按键输入

return 0;

}

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

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

void rsgm()//重置游戏

{ score= 0; ifnum= 1; over= 0; srand((unsigned)time(0));//启动随机数发生器

int n= rand()% 16;//随机函数产生0-15的数字

for(i= 0; i< 4; i++)

{for(j= 0; j< 4; j++)

{ if(n== 0){ int k= rand()% 3; if(k== 0|| k== 1){ a[i][j]= 2;}

else{ a[i][j]= 4;} n--;}

else{ a[i][j]= 0; n--;}

}

}

adnum();

system("cls");

CONSOLE_CURSOR_INFO gb={1,0};//以下两行是隐藏光标的设置,gb代指光标

SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE),&gb);

Color(14);//设置字体淡黄色

printf("\n\n\t\t 2048小游戏"); Color(7);//恢复白字黑底

printf("\n\t┌──────┬──────┬──────┬──────┐");

printf("\n\t│││││");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│││││");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│││││");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│││││");

printf("\n\t└──────┴──────┴──────┴──────┘");

show();

}

void show()//输出界面

{ for(i=0;i<4;i++)

for(j=0;j<4;j++)

{ gtxy(7*j+9,2*i+4);//gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

if(a[i][j]==0){printf(""); Color(7); printf("│");}

else if(a[i][j]<10){ if(a[i][j]== 2){ Color(14);}

else if(a[i][j]== 4){ Color(13);}

else if(a[i][j]== 8){ Color(12);}

printf("%d", a[i][j]); Color(7); printf("│");

}

else if(a[i][j]< 100){if(a[i][j]== 16){ Color(12);}

else if(a[i][j]== 32){ Color(10);}

else if(a[i][j]== 64){ Color(2);}

printf("%d", a[i][j]); Color(7); printf("│");

}

else if(a[i][j]< 1000){if(a[i][j]== 128){ Color(9);}

else if(a[i][j]== 256){ Color(1);}

else if(a[i][j]== 512){ Color(13);}

printf("%d", a[i][j]); Color(7); printf("│");

}

else if(a[i][j]< 10000){if(a[i][j]== 1024){ Color(5);}

else{ Color(15);}

printf("%d", a[i][j]); Color(7); printf("│");

}

}

if(jsk()== 0)

{ yes(); if(over){ gtxy(9,12); Color(10);

printf("\n\n游戏结束!是否继续? [ Y/N ]:");}

}

}

void inkey()//按键输入

{ int key;

while(1)

{ key= getch();

if(over){ if(key== 89|| key== 121){ rsgm(); continue;}

else if(key== 78|| key== 110){ return;}

else continue;}

ifnum= 0;

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

switch(key)

{ case 75: left(); break;

case 77: right(); break;

case 72: up(); break;

case 80: down();break;

}

if(score> best){ best= score;}

if(ifnum){ adnum(); show();}

}

}

int jsk()//计算空格数

{ int n= 0;

for(i= 0; i< 4; i++)

{ for(j= 0; j< 4; j++){ if( a[i][j]== 0){n++;}}}

return n;

}

void left()//向左移动

{ for(i= 0; i< 4; i++)

{for(j= 1, k= 0; j< 4; j++)

{ if(a[i][j]> 0)

{ if( a[i][k]== a[i][j])

{ a[i][k]*= 2; k++;

score= score+ 2* a[i][j];

a[i][j]= 0; ifnum= 1;}

else if( a[i][k]== 0){ a[i][k]= a[i][j]; a[i][j]= 0; ifnum= 1;}

else{ a[i][k+ 1]= a[i][j]; if((k+ 1)!= j){ a[i][j]= 0; ifnum= 1;}

k++;}

}

}

}

}

void right()//向右移动

{for(i= 0; i< 4; i++)

{for(j= 2, k= 3; j>= 0; j--)

{if(a[i][j]> 0)

{ if(a[i][k]== a[i][j])

{a[i][k]*= 2; k--; score= score+ 2* a[i][j]; a[i][j]= 0; ifnum= 1;}

else if( a[i][k]== 0){a[i][k]= a[i][j]; a[i][j]= 0; ifnum= 1;}

else{ a[i][k- 1]= a[i][j]; if((k- 1)!= j){ a[i][j]= 0; ifnum= 1;} k--;}

}

}

}

}

void up()//向上移动

{for(i= 0; i< 4; i++)

{for(j= 1, k= 0; j< 4; j++)

{if(a[j][i]> 0)

{if( a[k][i]== a[j][i]){ a[k][i]*= 2; k++;score= score+ 2* a[j][i];

a[j][i]= 0; ifnum= 1;}

else if( a[k][i]== 0){ a[k][i]= a[j][i]; a[j][i]= 0; ifnum= 1;}

else{ a[k+ 1][i]= a[j][i]; if((k+ 1)!= j){ a[j][i]= 0; ifnum= 1;}

k++;}

}

}

}

}

void down()//向下移动

{ for(i= 0; i< 4; i++)

{for(j= 2, k= 3; j>= 0; j--)

{if(a[j][i]> 0)

{if(a[k][i]== a[j][i])

{a[k][i]*= 2; k--;score= score+ 2* a[j][i]; a[j][i]= 0; ifnum= 1;}

else if(a[k][i]== 0){a[k][i]= a[j][i]; a[j][i]= 0; ifnum= 1;}

else{a[k- 1][i]= a[j][i];

if((k- 1)!= j){a[j][i]= 0; ifnum= 1;} k--;}

}

}

}

}

void adnum()//添加随机数

{ srand(time(0)); int n= rand()% jsk();

for(int i= 0; i< 4; i++)

{for(int j= 0; j< 4; j++)

{ if(a[i][j]== 0){if(n!= 0){ n--;}

else{int k= rand()% 3;

if(k== 0|| k== 1){a[i][j]= 2; return;}

else{a[i][j]= 4; return;}}

}

}

}

}

void yes()//游戏是否结束

{ for(int i= 0; i< 4; i++)

{for(int j= 0; j< 3; j++)

{if(a[i][j]== a[i][j+ 1]|| a[j][i]== a[j+ 1][i]){over= 0; return;}}

}

over= 1;

}

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

{ COORD zb;//zb代指坐标

zb.X= x;

zb.Y= y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);

}

二、如何用c语言编写一个小游戏

一、数学知识:

长方形的面积S=a*b

长方形周长L=2*(a+b)

其中a b分别为长方形的宽和高。

二、算法分析:

长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。

三、参考代码:

#include<stdio.h>

voidmain()

{

doublea,b;

doubleL,S;

scanf("%lf%lf",&a,&b);//输入宽和高。

L=2*(a+b);//计算周长。

S=a*b;//计算面积。

printf("面积=%lf,周长=%lf\n",S,L);//输出结果。

}

四、注意事项:

因为没有限制输入为整型,所以使用浮点型用来存储各项值。输入输出要用%lf。

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

"扫雷"小游戏C代码

#include<stdio.h>

#include<math.h>

#include<time.h>

#include<stdlib.h>

main()

{char a[102][102],b[102][102],c[102][102],w;

int i,j;/*循环变量*/

int x,y,z[999];/*雷的位置*/

int t,s;/*标记*/

int m,n,lei;/*计数*/

int u,v;/*输入*/

int hang,lie,ge,mo;/*自定义变量*/

srand((int)time(NULL));/*启动随机数发生器*/

leb1:/*选择模式*/

printf("\n请选择模式:\n 1.标准 2.自定义\n");

scanf("%d",&mo);

if(mo==2)/*若选择自定义模式,要输入三个参数*/

{do

{t=0; printf("请输入\n行数列数雷的个数\n");

scanf("%d%d%d",&hang,&lie,&ge);

if(hang<2){printf("行数太少\n"); t=1;}

if(hang>100){printf("行数太多\n");t=1;}

if(lie<2){printf("列数太少\n");t=1;}

if(lie>100){printf("列数太多\n");t=1;}

if(ge<1){printf("至少要有一个雷\n");t=1;}

if(ge>=(hang*lie)){printf("雷太多了\n");t=1;}

}while(t==1);

}

else{hang=10,lie=10,ge=10;}/*否则就是选择了标准模式(默认参数)*/

for(i=1;i<=ge;i=i+1)/*确定雷的位置*/

{do

{t=0; z[i]=rand()%(hang*lie);

for(j=1;j<i;j=j+1){if(z[i]==z[j]) t=1;}

}while(t==1);

}

for(i=0;i<=hang+1;i=i+1)/*初始化a,b,c*/

{for(j=0;j<=lie+1;j=j+1){a[i][j]='1'; b[i][j]='1'; c[i][j]='0';}}

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

{for(j=1;j<=lie;j=j+1){a[i][j]='+';}}

for(i=1;i<=ge;i=i+1)/*把雷放入c*/

{x=z[i]/lie+1; y=z[i]%lie+1; c[x][y]='#';}

for(i=1;i<=hang;i=i+1)/*计算b中数字*/

{for(j=1;j<=lie;j=j+1)

{m=48;

if(c[i-1][j-1]=='#')m=m+1; if(c[i][j-1]=='#')m=m+1;

if(c[i-1][j]=='#')m=m+1; if(c[i+1][j+1]=='#')m=m+1;

if(c[i][j+1]=='#')m=m+1; if(c[i+1][j]=='#')m=m+1;

if(c[i+1][j-1]=='#')m=m+1; if(c[i-1][j+1]=='#')m=m+1;

b[i][j]=m;

}

}

for(i=1;i<=ge;i=i+1)/*把雷放入b中*/

{x=z[i]/lie+1; y=z[i]%lie+1; b[x][y]='#';}

lei=ge;/*以下是游戏设计*/

do

{leb2:/*输出*/

system("cls");printf("\n\n\n\n");

printf("");

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

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c",w);

}

printf("\n|");

for(i=1;i<=lie;i=i+1){printf("---|");}

printf("\n");

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

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c|",w);

for(j=1;j<=lie;j=j+1)

{if(a[i][j]=='0')printf("|");

else printf("%c|",a[i][j]);

}

if(i==2)printf("剩余雷个数");

if(i==3)printf("%d",lei);

printf("\n|");

for(j=1;j<=lie;j=j+1){printf("---|");}

printf("\n");

}

scanf("%d%c%d",&u,&w,&v);/*输入*/

u=u+1,v=v+1;

if(w!='#'&&a[u][v]=='@')

goto leb2;

if(w=='#')

{if(a[u][v]=='+'){a[u][v]='@'; lei=lei-1;}

else if(a[u][v]=='@'){a[u][v]='?'; lei=lei+1;}

else if(a[u][v]=='?'){a[u][v]='+';}

goto leb2;

}

a[u][v]=b[u][v];

leb3:/*打开0区*/

t=0;

if(a[u][v]=='0')

{for(i=1;i<=hang;i=i+1)

{for(j=1;j<=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

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

{for(j=lie;j>=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i>=1;i=i-1)

{for(j=1;j<=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i>=1;i=i-1)

{for(j=lie;j>=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1;if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=1;i<=hang;i=i+1)/*检测0区*/

{for(j=1;j<=lie;j=j+1)

{if(a[i][j]=='0')

{if(a[i-1][j-1]=='+'||a[i-1][j-1]=='@'||a[i-1][j-1]=='?')t=1;

if(a[i-1][j+1]=='+'||a[i-1][j+1]=='@'||a[i-1][j+1]=='?')t=1;

if(a[i+1][j-1]=='+'||a[i+1][j-1]=='@'||a[i+1][j-1]=='?')t=1;

if(a[i+1][j+1]=='+'||a[i+1][j+1]=='@'||a[i+1][j+1]=='?')t=1;

if(a[i+1][j]=='+'||a[i+1][j]=='@'||a[i+1][j]=='?')t=1;

if(a[i][j+1]=='+'||a[i][j+1]=='@'||a[i][j+1]=='?')t=1;

if(a[i][j-1]=='+'||a[i][j-1]=='@'||a[i][j-1]=='?')t=1;

if(a[i-1][j]=='+'||a[i-1][j]=='@'||a[i-1][j]=='?')t=1;

}

}

}

if(t==1)goto leb3;

}

n=0;/*检查结束*/

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

{for(j=1;j<=lie;j=j+1)

{if(a[i][j]!='+'&&a[i][j]!='@'&&a[i][j]!='?')n=n+1;}

}

}

while(a[u][v]!='#'&&n!=(hang*lie-ge));

for(i=1;i<=ge;i=i+1)/*游戏结束*/

{x=z[i]/lie+1; y=z[i]%lie+1; a[x][y]='#';}

printf("");

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

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c",w);

}

printf("\n|");

for(i=1;i<=lie;i=i+1){printf("---|");}

printf("\n");

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

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c|",w);

for(j=1;j<=lie;j=j+1)

{if(a[i][j]=='0')printf("|");

else printf("%c|",a[i][j]);

}

if(i==2)printf("剩余雷个数");

if(i==3)printf("%d",lei); printf("\n|");

for(j=1;j<=lie;j=j+1){printf("---|");}

printf("\n");

}

if(n==(hang*lie-ge)) printf("你成功了!\n");

else printf("游戏结束!\n");

printf("重玩请输入1\n");

t=0;

scanf("%d",&t);

if(t==1)goto leb1;

}

/*注:在DEV c++上运行通过。行号和列号都从0开始,比如要确定第0行第9列不是“雷”,就在0和9中间加入一个字母,可以输入【0a9】三个字符再按回车键。3行7列不是雷,则输入【3a7】回车;第8行第5列是雷,就输入【8#5】回车,9行0列是雷则输入【9#0】并回车*/

标签: 手游

声明:

1、本文来源于互联网,所有内容仅代表作者本人的观点,与本网站立场无关,作者文责自负。

2、本网站部份内容来自互联网收集整理,对于不当转载或引用而引起的民事纷争、行政处理或其他损失,本网不承担责任。

3、如果有侵权内容、不妥之处,请第一时间联系我们删除,请联系