C语言打字游戏设置123等级,半月左右新手做的打字游戏

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include "stdio.h"

#include "conio.h"

#include

#include

#include "time.h"

#define xx 60 //列数

#define yy 20 //行数

void gotoxy(int x, int y);

int shuzhi(int map[xx][yy], int x, int y);

int ffbl(int m[xx][yy], char ch, int xiaochu);

void hidden(); //隐藏光标

int xiaochudi(int m[xx][yy], int n); //消除底行

int xuanzedengji(); //选择等级

int main(void)

{

hidden();

int * lose, lose1=0; //字母没按中的个数 (做不出来)

int dengji; //游戏等级:**初级:1 ** **中级:2** **高级:3**

int jishu=0; //掉落最下面的个数

int maxt; //最多地图能掉的个数

int sudu=500; //掉落速度

int xiaochu=0; //消除掉的个数

int m[xx][yy]; //前面是列,后面是行

int i,j,t,len,sum =0, sum1=0;

char ch=1,ch1=1;

while(!(maxt = xuanzedengji()))

maxt=0;

system("cls");

srand((unsigned)time(NULL));

for (i=0; i

{

for (j=0; j

{

m[i][j]=0;

}

}

// for (i=0; i

// {

// gotoxy(xx,i);

// printf("%d", i);

// }

for (i=0; i

{

gotoxy(i,yy);

printf("^");

}

while(1)

{

sum = 0;

sum1=0;

t=rand()%xx;

for(i=0;i

{

for (j=1; j

{

if (m[i][j]!=0)

len=1;

else

len=0;

sum = sum +len;

}

}

if(sum

{

for (i=0;i

{

sum1=sum1+m[t][i];

if(sum1>0)

;

else

m[t][0]=rand()%26+65; //生成字母

}

}

for (i=xx-1;i>=0; i--)

for(j=yy-1; j>=0; j--)

{

shuzhi(m, i, j);

}

while(kbhit())

{

ch=getch();

ch1=ch-32;

}

xiaochu = ffbl(m, ch, xiaochu);

ch =ch1= 1;

jishu = xiaochudi(m,jishu);

gotoxy(3,22);

if(sudu>40)

sudu=500-xiaochu/5*20;

if(jishu>50)

{

system("cls");

gotoxy(10,10);

puts("您已经死亡,请重新开始");

gotoxy(10,11);

printf("共消除%d次,丢失%d次",xiaochu,jishu);

while('\n'!=(ch=getchar()))

continue;

system("cls");

gotoxy(10,11);

puts("是否还要继续?退出请输Y!任意键继续!");

break;

}

printf("全图掉落总个数为%d个, 丢失%d次, 消除%d次, 速度为%d毫秒",maxt,jishu,xiaochu,sudu);

Sleep(sudu); //调整掉落速度

}

//getch();

ch = getch();

if('y'==ch||'Y'==ch)

{

return 0;

}

else

{

main();

} main();

return 0;

} void gotoxy(int x, int y)

{

COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

} int shuzhi(int map[xx][yy], int x, int y)

{

int t;

if(map[x][y]!=0 && y

{

t=map[x][y];

map[x][y]=0;

map[x][y+1]=t;

}

return 0;

}

int ffbl(int m[xx][yy], char ch,int xiaochu)

{

int k, l;

char ch1=ch-32;

for(l=yy-1; l>=0; l--) //for (k=0; k

{

for(k=xx-1; k>=0; k--) //for (l=1; l

{

if(m[k][l]!=0)

{

gotoxy(k,l-1);

printf(" ");

if(ch==m[k][l]||ch1==m[k][l])

{

m[k][l]=0;

gotoxy(k, l);

printf(" ");

ch=ch1=0;

xiaochu++;

}

else

{

gotoxy(k, l);

printf("%c", m[k][l]);

}

}

}

}

return xiaochu;

}

void hidden()//隐藏光标

{

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_CURSOR_INFO cci;

GetConsoleCursorInfo(hOut,&cci);

cci.bVisible=0;//赋1为显示,赋0为隐藏

SetConsoleCursorInfo(hOut,&cci);

}

int xiaochudi(int m[xx][yy],int n) //消除底行

{

int i;

for(i=0; i

{

if(m[i][19]!=0)

{

m[i][19]=0;

n++;

gotoxy(i, 19);

printf(" ");

}

}

return n;

}

int xuanzedengji() //选择等级

{

char dengji;

system("cls");

gotoxy(0,0);

puts("请输入游戏等级:\n**初级:1 ** 最多掉落5个字母\n**中级:2 ** 最多掉落10个字母\n**高级:3 ** 最多掉落20个字母\n");

dengji = getch();

switch(dengji)

{

case '1' : return 5;

case '2' : return 10;

case '3' : return 20;

default :return 0;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值