C语言乒乓球游戏源码
更新时间:2023-03-19 20:03:01 阅读量: 人文社科 文档下载
- c语言游戏贪吃蛇源码推荐度:
- 相关推荐
C语言乒乓球游戏源码
程序说明:
1.程序运行时,显示游戏欢迎页!
2.可统计游戏当前分数,并时刻进行统计和显示!
3.可根据游戏当前分数,调整乒乓球的速度,以提高游戏难度!
4.游戏结束时,显示游戏结束页,提示玩家退出游戏!
游戏源码:
#include "stdio.h"
#include "graphics.h"
#include "stdlib.h"
#include "bios.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
/* 存放方块的信息 */
struct box {
int x; /* 方块右上角横坐标 */
int y; /* 方块右上角纵坐标 */
int key; /* 方块是否被击中过,1表示被击中过,0表示没有被击中过 */
}a[10][20];
int k; /* 用来判断游戏的结束方式,0:按ESC退出,1:正常退出 */
int num=0; /* 用来统计用户的当前分数 */
char strnum[5]; /* 用来存放用户当前分数对应的字符串 */
/* 初始化图形 */
void initgr() {
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
}
/* 画出初始图 */
void picture() {
int x,y,i,color;
setcolor(WHITE);
outtextxy(250,400,"ANY KEY ...");
while(!kbhit()) {
C语言乒乓球游戏源码
settextstyle(0,0,4);
for(i=1;i<=15;i++) {
setcolor(i);
outtextxy(100,180,"PING PANG BALL");
delay(5000);
}
}
cleardevice();
setbkcolor(BLUE);
setfillstyle(SOLID_FILL,RED);
bar(300,400,348,404);
textcolor(WHITE); /* 显示玩家当前分数 */
outtextxy(250,420,"NUMBER:");
/* 画屏幕上端的方块 */
randomize();
for(y=15;y<=180;y=y+15) {
if((y/15)%2==0) {
i=1;
} else {
i=0;
}
for(x=0;x<=640;x=x+32) {
if((x/32)%2==0 && i==1) {
color=5;
} else if(i==1 && (x/32)%2==1) {
color=15;
} else if(i==0 && (x/32)%2==0) {
color=15;
} else {
color=5;
}
/* color=((rand()%5)+2); */
setfillstyle(SOLID_FILL,color);
bar(x,y,x+32,y+15);
}
}
sleep(1);
}
/* 关闭图形 */
void closegr() {
cleardevice();
closegraph();
C语言乒乓球游戏源码
}
/* 游戏结束 */
void end() {
cleardevice();
setbkcolor(0);
switch(k) {
case 1:
setcolor(RED);
settextstyle(0,0,3);
outtextxy(200,150,"YOU LOST !!");
itoa(num,strnum,10); /* 将num数字按十进制方式转换为对应的字符串 */
outtextxy(400,220,strnum); /* 输出当前分数 */
sleep(2);
cleardevice();
settextstyle(0,0,4);
outtextxy(180,220,"GAME OVER");
sleep(2);
break;
case 0:
setcolor(RED);
settextstyle(0,0,4);
outtextxy(180,220,"GAME OVER");
sleep(2);
break;
}
}
/* 爆裂效果 */
void bomb(int x,int y) {
int r1,i;
int pointX,pointY,point_color;
setcolor(YELLOW);
for(r1=1;r1<=4;r1++) {
circle(x+16,y+7,r1);
delay(1000);
}
delay(3000);
setcolor(RED);
for(r1=1;r1>=6;r1++) {
circle(x+16,y+7,r1);
delay(1000);
}
C语言乒乓球游戏源码
delay(3000);
setcolor(BLUE);
for(r1=6;r1>=1;r1--) {
circle(x+16,y+7,r1);
delay(1000);
}
for(i=1;i<=50;i++) {
point_color=rand()%15;
pointX=(rand()%32+x);
pointY=(rand()%15+y);
putpixel(pointX,pointY,point_color);
delay(1000);
}
setfillstyle(1,BLUE);
bar(x,y,x+32,y+15);
}
/* 开始游戏 */
void move() {
int key=0;
int i,j,boxX,boxY;
int ballX,ballY,dX=1,dY=1;
int barX=300,barY=400,x,y;
randomize();
ballX=rand()%620+10;
ballY=rand()%200+190;
for(;;) { /* 受侦察的指点.... */
/* 小球的运动 */
while(!kbhit()) {
if((ballX<=10)||(ballX>=630)) {
if(num<50) { /* 此判断用于修改小球的运行速度:X方向 */
dX=dX*(-1);
} else if((num>=50)||(num<=100)) {
/* 当分数超过50,低于100时,小球速度加快一倍:X方向 */ dX=dX*(-2);
} else if(num>100) {
dX=dX*(-3);
}
}
if((ballY<=10)||(ballY>=470)) {
if(num<50) { /* 此判断用于修改小球的运行速度:Y方向 */ dY=dY*(-1);
C语言乒乓球游戏源码
} else if((num>=50)||(num<=100)) {
/* 当分数超过50,低于100时,小球速度加快一倍:Y方向 */ dY=dY*(-2);
} else if(num>100) {
dY=dY*(-3);
}
}
setcolor(YELLOW);
circle(ballX+=dX,ballY-=dY,5);
setfillstyle(SOLID_FILL,YELLOW);
floodfill(ballX,ballY,YELLOW);
delay(2500);
setcolor(BLUE);
circle(ballX,ballY,5);
setfillstyle(SOLID_FILL,BLUE);
floodfill(ballX,ballY,BLUE);
/* 判断是否击中方块 */
for(boxY=0,i=0;boxY<=150;boxY=boxY+15,i++)
for(boxX=0,j=0;boxX<=640;boxX=boxX+32,j++) {
if((ballX<boxX+32)&&
(ballX>boxX)&&
((ballY<=(boxY+20))&&
(ballY>=boxY-5))&&
(a[i][j].key==0)) {
dY=dY*(-1);
setfillstyle(1,BLUE);
bar(boxX,boxY,boxX+32,boxY+15);
bomb(boxX,boxY);
a[i][j].key=1;
num=num+10; /* 击中方块给玩家加分 */ setcolor(BLUE);
settextstyle(0,0,3);
itoa(num,strnum,10); /* 将num数字按十进制方式转换为对应的字符串 */
gotoxy(500,420);
clreol();
outtextxy(500,420,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
outtextxy(500,420,"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
outtextxy(500,420,"**********************************");
C语言乒乓球游戏源码
outtextxy(500,420,"1111111111111111111111111111111111");
outtextxy(500,420,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
outtextxy(500,420,"gggggggggggggggggggggggggggggggggg");
outtextxy(500,420,"HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH");
outtextxy(500,420,"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR");
setcolor(RED);
outtextxy(500,420,strnum); /* 输出当前分数 */ switch(key) {
case 1:
i=i+1;
j=j+1;
break;
}
}
}
/* 判断反弹或出界 */
if((ballX>=barX)&&(ballX<=barX+60)&&(ballY>=390)) dY=dY*(-1);
if(((ballX<barX)||(ballX>barX+60))&&(ballY>410)) { sleep(1);
k=1;
return;
}
}
/* 球拍的运动 */
key=bioskey(0);
x=barX;
y=barY;
if(key==LEFT) {
barX-=10;
setfillstyle(SOLID_FILL,BLUE);
bar(x,y,x+60,y+4);
setfillstyle(SOLID_FILL,RED);
bar(barX,barY,barX+60,barY+4);
} else if(key==RIGHT) {
barX+=10;
setfillstyle(SOLID_FILL,BLUE);
C语言乒乓球游戏源码
bar(x,y,x+60,y+4);
setfillstyle(SOLID_FILL,RED); bar(barX,barY,barX+60,barY+4); } else if(key==ESC) {
k=0;
break;
}
}
}
void main() {
int b,c,d;
int i,j,x,y;
for(i=0,y=0;i<10;i++) {
x=0;
for(j=0;j<20;j++) {
a[i][j].x=x;
a[i][j].y=y;
a[i][j].key=0;
x=x+32;
}
y=y+15;
}
initgr();
picture();
move();
end();
closegr();
}
正在阅读:
C语言乒乓球游戏源码03-19
宝宝消化不良的症状及治疗方法05-10
美术写生实习报告01-23
原美公司人力手册03-18
钻井提速提效管理模式的探索与尝试07-10
Oracle10g RMAN之nocatalog备份与还原01-15
空间分析复习提纲01-30
2015年山东滨州中考物理试卷及答案08-15
财务分析各章习题集答案06-30
网站验收确认书08-30
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 乒乓球
- 源码
- 语言
- 游戏