赛车游戏

游戏动过dos窗口不断刷新进行实现,画面比较丑陋。

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#include "conio.h"  
#include "math.h" 
#include "windows.h"
#define L 15
#define C 30 
int executable=1,grade=0,max=0; 
void output(char a[][C],char Car[][C])
{
	int i,j;
	printf("\n\n\t\t    ==>>4向左,6向右其它为前进<<==");
	printf("\n\n\t\t\t==>>最高成绩为%d分<<==",max);
	printf("\n\n\t\t\t==>>当前成绩为%d分<<==\n\n",grade);
	for(i=L-1;i>=0;i--)
	{ 
		printf("\t\t|★|");
		for(j=1;j<C-1;j++)
		{
			if(a[i][j]=='*' || Car[i][j]=='*')
				printf("■");
			else 
				printf("  ");
			if(a[i][j]=='*' && Car[i][j]=='*')
				executable=0;
		}
		printf("|★|\n");
	}
}
void plane(char a[][C])
{
	a[0][C/2-2]=a[0][C/2-1]=a[0][C/2]='*';
	a[1][C/2-1]='*';
	a[2][C/2-2]=a[2][C/2-1]=a[2][C/2]='*';
	a[3][C/2-1]='*';
} 
void move (char a[][C],char point)
{
	int i,j;
	char temp;
	switch(point)
	{
		case '4':{
			if(a[0][1]=='*')
				break;
			for(i=0;i<4;i++)
				for(j=0;j<C-1;j++)
					a[i][j]=a[i][j+1];
			break;
		}
		case '6':{
			if(a[0][C-2]=='*')
				break;
			for(i=0;i<4;i++)
				for(j=C-1;j>0;j--)
					a[i][j]=a[i][j-1];
			break;
		}
	}
}
void car(char a[][C],char Car[][C],int count)
{
	int i,j,random1,random2;
	if(count==1)
	if(rand()%3!=1)
	{
		if(rand()%3!=2)	
		{
			random1=rand()%(C-4)+2;
			Car[L-4][random1]='*';
			Car[L-3][random1-1]=Car[L-3][random1]=Car[L-3][random1+1]='*';
			Car[L-2][random1]='*';
			Car[L-1][random1-1]=Car[L-1][random1]=Car[L-1][random1+1]='*';
		}
		else
		{
			random1=rand()%(C-4)+2;
			Car[L-4][random1]='*';
			Car[L-3][random1-1]=Car[L-3][random1]=Car[L-3][random1+1]='*';
			Car[L-2][random1]='*';
			Car[L-1][random1-1]=Car[L-1][random1]=Car[L-1][random1+1]='*';
			while(1)
			{
				random2=rand()%(C-4)+2;
				if(fabs(random2-random1)>2)
				{
					Car[L-4][random2]='*';
					Car[L-3][random2-1]=Car[L-3][random2]=Car[L-3][random2+1]='*';
					Car[L-2][random2]='*';
					Car[L-1][random2-1]=Car[L-1][random2]=Car[L-1][random2+1]='*';
					break;
				}
			}
		}
	}
	for(i=1;i<L-1;i++)
		for(j=1;j<C-1;j++)
		{
			Car[i][j]=Car[i+1][j];
			Car[i+1][j]=' ';
		}
} 
void game(char a[][C])
{
	long int wait=300;
	char point,Car[L][C]={' '};
	int count=1;
	float Time=time(0);
	while(executable)
	{
		output(a,Car);
		if(kbhit())
		{
			point=getch();	
		}
		Sleep(wait); 
		car(a,Car,count); 
		move(a,point);
		system("CLS");
		count++;
		if(count==5)
			count=1;
		grade++;
		if(max<grade)
			max=grade; 
		if(wait>100)
			wait--;
		point='0';
	}
	executable=1;
	grade=0;
}
void gameover()
{
	printf("\n\n\n\n\n\t\t\t|||======================|||\t\t\t\n");
	printf("\t\t\t|||=====GAME OVER!!======|||\t\t\t\n");
	printf("\t\t\t|||======================|||\t\t\t\n");
	printf("\n\n\n\t\t\t|||======================|||\t\t\t\n");
	printf("\t\t\t|||=If you want to again=|||\t\t\t\n");
	printf("\t\t\t|||===Please point '1'===|||\t\t\t\n");
	printf("\t\t\t|||======================|||\t\t\t\n\t\t\t");
}
int main(void)
{
	system("color 3e");
	char a[L][C]={' '};
	int again=1;
	srand(time(0));
	plane(a);
	while(again==1)
	{
		game(a);
		gameover();
		scanf("%d",&again);
		system("CLS");
	}
	return 0;
} 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值