C语言乒乓球游戏源码
更新时间:2023-05-30 16:41: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语言乒乓球游戏源码05-30
我是谁为了谁依靠谁心得体会(精选多篇)04-16
最新基础会计综合题——资产负债表含答案04-19
(人教版PEP)五年级英语上册第5单元测试题及答案12-27
统计局2022年工作安排08-01
黑龙江省牡丹江市2016届高三上学期期末热身模拟英语试题(含答案)05-23
关于认真落实“七个一”工作,提高重点帮建质量——在帮建工作经验交流会上的讲话发言演讲稿08-04
无机化学知识点归纳04-02
市人事局领导班子述职述廉报告(精选多篇)09-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 乒乓球
- 源码
- 语言
- 游戏