C語(yǔ)言實(shí)現(xiàn)彈跳小球
這是一個(gè)簡(jiǎn)單的c語(yǔ)言源代碼,C語(yǔ)言實(shí)現(xiàn)彈跳小球,設(shè)置了小球的分?jǐn)?shù)及過(guò)關(guān)的難度。
#include "graphics.h"
#include "math.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
int x,y,x1,y1,key,t1,t2,keyx,keylong,keymove,over=0,i,tt=0,fast;
int ballx[9]={53,103,263,120,236,390,410,450,600};
int bally[9]={158,239,120,113,30,313,120,263,231},ballz[9]={0};
float ls;
win()
{float lx,ly,ll;
for(i=0;i<9;i++)
{
if(ballz[i]==1)/*假如球體已經(jīng)消失就不判定*/
continue;
lx=(float)(ballx[i]-x);
ly=(float)bally[i]-y;
ll=lx*lx+ly*ly;
ls=sqrt(ll);
if((int)ls<17)/*判定兩球是否碰到*/
{tt++;/*記錄消失幾個(gè)球*/
fast-=50;/*速度加快*/
if(i%2==0)/*移動(dòng)加快*/
keymove+=5;
else
{
setcolor(0);
rectangle(keyx,460,keyx+keylong,470);
keylong-=10;/*長(zhǎng)條變短*/
setcolor(YELLOW);
rectangle(keyx,460,keyx+keylong,470);
}
ballz[i]=1;
setcolor(0);
circle(ballx[i],bally[i],10);
if(y<bally[i])
if(x<ballx[i])
{t1=-1;t2=-1;}
else
{t1=1;t2=-1;}
else
if(x<ballx[i])
{t1=-1;t2=1;}
else
{t1=1;t2=1;}
}
}
}
fungo()
{ x=100,y=50,keyx=200,keylong=100,keymove=15,fast=5000;
for(i=0;i<9;i++)
{
setcolor(i+1);
circle(ballx[i],bally[i],10);
}
sleep(1);
t1=t2=1;
while(1)
{
while(!kbhit())
{
setcolor(YELLOW);
rectangle(keyx,460,keyx+keylong,470);
x1=x;
y1=y;
x+=t1;
y+=t2;
setcolor(4);
circle(x,y,6);
delay(fast);
setcolor(0);
circle(x,y,6);
win();
if(tt==9)/*勝利*/
{
cleardevice();
over=1;
setcolor(RED);
settextstyle(0,0,4);
setusercharsize(3,1,3,1);
outtextxy(200,200," YOU WIN! ");
break;
}
if(y>480)/*失敗*/
{
cleardevice();
over=1;
setcolor(RED);
settextstyle(0,0,4);
setusercharsize(3,1,3,1);
outtextxy(200,200,"GAME OVER");
break;
}
else if(x==11&&y==11)/*判定碰到東西*/
{t1=1;t2=1;}
else if(x==629&&y==11)
{t1=-1;t2=1;}
else if(x==11)
{
if(y<y1)
{t1=1;t2=-1;}
else
{t1=1;t2=1;}
}
else if(y==11)
{
if(x<x1)
{t1=-1;t2=1;}
else
{t1=1;t2=1;}
}
else if(x==629)
{
if(y1>y)
{t1=-1;t2=-1;}
else
{t1=-1;t2=1;}
}
else if(y==449)
{
if(x>=keyx&&x<=keyx+keylong)
{
if(x<(keyx+keylong/4))
{t1=-1;t2=-1;}
else if(x>=(keyx+keylong/4)&&x<(keyx+keylong/2))
{t1=-1;t2=-2;}
else if(x>=(keyx+keylong/2)&&x<(keyx+keylong/4*3))
{t1=1;t2=-2;}
else
{t1=1;t2=-1;}
}
}
}
if(over)
break;
key=bioskey(0);
setcolor(0);
rectangle(keyx,460,keyx+keylong,470);
if(key==ESC)
{cleardevice();break;}
else if(key==LEFT)
keyx-=keymove;
else if(key==RIGHT)
keyx+=keymove;
}
}
main()
{int gd=DETECT,gr;
initgraph(&gd,&gr,"c:\\tc");
fungo();
getch();
sleep(1);
closegraph();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言用數(shù)組實(shí)現(xiàn)反彈球消磚塊
- C語(yǔ)言用函數(shù)實(shí)現(xiàn)反彈球消磚塊
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單反彈球消磚塊游戲
- C語(yǔ)言實(shí)現(xiàn)反彈球消磚塊游戲
- C語(yǔ)言實(shí)現(xiàn)反彈球游戲
- C語(yǔ)言實(shí)現(xiàn)反彈球小游戲
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈球游戲
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲
- C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有顏色彈跳小球
- C語(yǔ)言實(shí)現(xiàn)雙人反彈球游戲
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)商品管理系統(tǒng)開發(fā)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)商品管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語(yǔ)言字符/字符串相關(guān)函數(shù)收藏大全
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言字符/字符串的相關(guān)函數(shù),文中通過(guò)示例代碼總結(jié)的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
linux c程序中獲取shell腳本輸出的實(shí)現(xiàn)方法
以下是對(duì)在linux下c程序中獲取shell腳本輸出的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08
C++ 容器適配器仿函數(shù)與priority_queue的使用
本文主要介紹了C++ 容器適配器仿函數(shù)與priority_queue的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
C語(yǔ)言關(guān)系運(yùn)算符實(shí)例詳解
本文主要介紹C語(yǔ)言的關(guān)系運(yùn)算符的知識(shí),這里提供實(shí)例代碼以便參考,希望能幫助有需要的小伙伴2016-07-07
C語(yǔ)言運(yùn)算符深入探究?jī)?yōu)先級(jí)與結(jié)合性及種類
C語(yǔ)言運(yùn)算符號(hào)指的是運(yùn)算符號(hào)。C語(yǔ)言中的符號(hào)分為10類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位操作運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符、指針運(yùn)算符、求字節(jié)數(shù)運(yùn)算符和特殊運(yùn)算符2022-05-05
C++?OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制
這篇文章主要主要為大家詳細(xì)介紹了如何利用C++和OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下2022-07-07

