学C语言半个月了,分享个自己编写的弹球小游戏,vc编译,请高手指点

这篇博客展示了作者使用C语言编写的弹球小游戏,包括游戏规则、控制方式和程序实现,玩家可以通过键盘控制托盘左右移动,游戏结束后可以更新最高分记录。
摘要由CSDN通过智能技术生成
#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;
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值