C语言乒乓球游戏源码.docx
- 文档编号:5127100
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:8
- 大小:16.15KB
C语言乒乓球游戏源码.docx
《C语言乒乓球游戏源码.docx》由会员分享,可在线阅读,更多相关《C语言乒乓球游戏源码.docx(8页珍藏版)》请在冰豆网上搜索。
C语言乒乓球游戏源码
程序说明:
1.程序运行时,显示游戏欢迎页!
2.可统计游戏当前分数,并时刻进行统计和显示!
3.可根据游戏当前分数,调整乒乓球的速度,以提高游戏难度!
4.游戏结束时,显示游戏结束页,提示玩家退出游戏!
游戏源码:
#include"stdio.h"
#include"graphics.h"
#include"stdlib.h"
#include"bios.h"
#defineLEFT0x4b00
#defineRIGHT0x4d00
#defineESC0x011b
/*存放方块的信息*/
structbox{
intx;/*方块右上角横坐标*/
inty;/*方块右上角纵坐标*/
intkey;/*方块是否被击中过,1表示被击中过,0表示没有被击中过*/
}a[10][20];
intk;/*用来判断游戏的结束方式,0:
按ESC退出,1:
正常退出*/
intnum=0;/*用来统计用户的当前分数*/
charstrnum[5];/*用来存放用户当前分数对应的字符串*/
/*初始化图形*/
voidinitgr(){
intgd=DETECT,gm;
initgraph(&gd,&gm,"");}/*画出初始图*/
voidpicture(){
intx,y,i,color;
setcolor(WHITE);
outtextxy(250,400,"ANYKEY...");
while(!
kbhit()){
settextstyle(0,0,4);
for(i=1;i<=15;i++){
setcolor(i);
outtextxy(100,180,"PINGPANGBALL");
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;
}elseif(i==1&&(x/32)%2==1){
color=15;
}elseif(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);}/*关闭图形*/
voidclosegr(){
cleardevice();
closegraph();}/*游戏结束*/
voidend(){
cleardevice();
setbkcolor
(0);
switch(k){
case1:
setcolor(RED);
settextstyle(0,0,3);
outtextxy(200,150,"YOULOST!
!
");
itoa(num,strnum,10);/*将num数字按十进制方式转换为对应的字符串*/
outtextxy(400,220,strnum);/*输出当前分数*/
sleep
(2);
cleardevice();
settextstyle(0,0,4);
outtextxy(180,220,"GAMEOVER");
sleep
(2);
break;
case0:
setcolor(RED);
settextstyle(0,0,4);
outtextxy(180,220,"GAMEOVER");
sleep
(2);
break;}}
/*爆裂效果*/
voidbomb(intx,inty){
intr1,i;
intpointX,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);}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);}/*开始游戏*/
voidmove(){
intkey=0;
inti,j,boxX,boxY;
intballX,ballY,dX=1,dY=1;
intbarX=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);
}elseif((num>=50)||(num<=100)){
/*当分数超过50,低于100时,小球速度加快一倍:
X方向*/dX=dX*(-2);
}elseif(num>100){
dX=dX*(-3);}}
if((ballY<=10)||(ballY>=470)){
if(num<50){/*此判断用于修改小球的运行速度:
Y方向*/dY=dY*(-1);
}elseif((num>=50)||(num<=100)){
/*当分数超过50,低于100时,小球速度加快一倍:
Y方向*/dY=dY*(-2);
}elseif(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 (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,"**********************************"); outtextxy(500,420,"1"); outtextxy(500,420,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"); outtextxy(500,420,"ggggggggggggggggg"); outtextxy(500,420,"HHHHHHHHHHHHHHHHH"); outtextxy(500,420,"RRRRRRRRRRRRRRRRR"); setcolor(RED); outtextxy(500,420,strnum);/*输出当前分数*/switch(key){ case1: i=i+1; j=j+1; break;}}}/*判断反弹或出界*/ if((ballX>=barX)&&(ballX<=barX+60)&&(ballY>=390)) dY=dY*(-1); if(((ballX (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); }elseif(key==RIGHT){ barX+=10; setfillstyle(SOLID_FILL,BLUE); bar(x,y,x+60,y+4); setfillstyle(SOLID_FILL,RED); bar(barX,barY,barX+60,barY+4); }elseif(key==ESC){ k=0; break;}}}voidmain(){ intb,c,d; inti,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();}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 乒乓球 游戏 源码