#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<conio.h>
#define a 1;
#define b 2;
#define c 3;
#define d 4;
#define L 5;
#define R 6;
struct BALL
{
int x;
int y;
}ball;
struct PLATE
{
int x;
int y;
}plate;
int status; //球运行方向标志//
int sleeptime=90; //间隔时间//
int px; //托盘坐标//
int endgamestatus; //游戏结束标志//
int statusd; //按键标志//
int score=0; //得分//
int highest; //最高分记录//
FILE *fp; //最高分记录文件//
int len; //难度即托盘长度,初始长度为2//
void Pos(int x,int y); //光标位置//
void creatball(); //打印球初始位置//
void prtplate(); //打印托盘初始位置//
void creatmap(); //打印框//
void pause(); //接收暂停信号//
void gamestart(); //游戏开始//
void ballmove(); //球的运动函数//
void gameprg(); //游戏过程//
void lrplate(); //托盘左右移动//
int endgame(); //游戏结束处理//
void Pos(int x,int y) //光标定位函数//
{
COORD pos;
HANDLE hOutput;
pos.X=x;
pos.Y=y;
hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput,pos);
}
void creatmap() //打印地图函数//
{
int i;
system("title C语言制作 弹球游戏");
for(i=0;i<=80;i+=2)
{
Pos(i,0);
printf("■");
}
for(i=0;i<=26;i++)
{
Pos(0,i);
printf("■");
Pos(80,i);
printf("■");
}
fp=fopen("最高分记录.txt","r+"); //打开最高分记录文件,没有就创建一个//
if(fp==NULL)
{
fp=fopen("最高分记录.txt","w+");
}
fscanf(fp,"%d",&highest);
Pos(90,10);
printf("您的得分:%d",score);
Pos(90,12);
printf("最高分记录:%d",highest);
Pos(90,16);
printf("按← →键左右移动托盘");
Pos(90,18);
printf("按空格键暂停");
Pos(90,20);
printf("按ESC键退出游戏");
}
void creatball() //初始定位球函数//
{
int i,j;
ball.x=40;
ball.y=3;
Pos(ball.x,ball.y);
printf ("●");
Pos(28,15);
printf("按← →键左右移动光标定位球的位置");
Pos(28,17);
printf("按ESC键退出设置");
while(1)
{
if(GetAsyncKeyState(VK_LEFT))
{
statusd=L;
Pos(ball.x,ball.y);
printf(" ");
ball.x=ball.x-1;
Pos(ball.x,ball.y);
printf("●");
}
else if(GetAsyncKeyState(VK_RIGHT))
{
statusd=R;
Pos(ball.x,ball.y);
printf(" ");
ball.x=ball.x+1;
Pos(ball.x,ball.y);
printf("●");
}
Sleep(sleeptime);
if(GetAsyncKeyState(VK_ESCAPE))
break;
}
for(i=16;i<=76;i++) //局部清屏//
{
for(j=11;j<=20;j++)
{
Pos(i,j);
printf(" ");
}
}
}
void prtplate() //初始定位托盘函数//
{
int i,j;
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<conio.h>
#define a 1;
#define b 2;
#define c 3;
#define d 4;
#define L 5;
#define R 6;
struct BALL
{
int x;
int y;
}ball;
struct PLATE
{
int x;
int y;
}plate;
int status; //球运行方向标志//
int sleeptime=90; //间隔时间//
int px; //托盘坐标//
int endgamestatus; //游戏结束标志//
int statusd; //按键标志//
int score=0; //得分//
int highest; //最高分记录//
FILE *fp; //最高分记录文件//
int len; //难度即托盘长度,初始长度为2//
void Pos(int x,int y); //光标位置//
void creatball(); //打印球初始位置//
void prtplate(); //打印托盘初始位置//
void creatmap(); //打印框//
void pause(); //接收暂停信号//
void gamestart(); //游戏开始//
void ballmove(); //球的运动函数//
void gameprg(); //游戏过程//
void lrplate(); //托盘左右移动//
int endgame(); //游戏结束处理//
void Pos(int x,int y) //光标定位函数//
{
COORD pos;
HANDLE hOutput;
pos.X=x;
pos.Y=y;
hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput,pos);
}
void creatmap() //打印地图函数//
{
int i;
system("title C语言制作 弹球游戏");
for(i=0;i<=80;i+=2)
{
Pos(i,0);
printf("■");
}
for(i=0;i<=26;i++)
{
Pos(0,i);
printf("■");
Pos(80,i);
printf("■");
}
fp=fopen("最高分记录.txt","r+"); //打开最高分记录文件,没有就创建一个//
if(fp==NULL)
{
fp=fopen("最高分记录.txt","w+");
}
fscanf(fp,"%d",&highest);
Pos(90,10);
printf("您的得分:%d",score);
Pos(90,12);
printf("最高分记录:%d",highest);
Pos(90,16);
printf("按← →键左右移动托盘");
Pos(90,18);
printf("按空格键暂停");
Pos(90,20);
printf("按ESC键退出游戏");
}
void creatball() //初始定位球函数//
{
int i,j;
ball.x=40;
ball.y=3;
Pos(ball.x,ball.y);
printf ("●");
Pos(28,15);
printf("按← →键左右移动光标定位球的位置");
Pos(28,17);
printf("按ESC键退出设置");
while(1)
{
if(GetAsyncKeyState(VK_LEFT))
{
statusd=L;
Pos(ball.x,ball.y);
printf(" ");
ball.x=ball.x-1;
Pos(ball.x,ball.y);
printf("●");
}
else if(GetAsyncKeyState(VK_RIGHT))
{
statusd=R;
Pos(ball.x,ball.y);
printf(" ");
ball.x=ball.x+1;
Pos(ball.x,ball.y);
printf("●");
}
Sleep(sleeptime);
if(GetAsyncKeyState(VK_ESCAPE))
break;
}
for(i=16;i<=76;i++) //局部清屏//
{
for(j=11;j<=20;j++)
{
Pos(i,j);
printf(" ");
}
}
}
void prtplate() //初始定位托盘函数//
{
int i,j;