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ù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將用C語(yǔ)言實(shí)現(xiàn)單鏈表,需要的可以參考一下2022-06-06C++ 數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)(前序/中序/后序遞歸、非遞歸遍歷)
這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)(前序/中序/后序遞歸、非遞歸遍歷)的相關(guān)資料,這里提供實(shí)例代碼來(lái)幫助大家理解掌握二叉樹(shù),需要的朋友可以參考下2017-07-07C++中constexpr與模板元編程的基礎(chǔ)、常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)及其規(guī)避策略
C++編譯時(shí)計(jì)算允許程序在編譯階段完成計(jì)算任務(wù),constexpr與模板元編程是C編譯時(shí)計(jì)算的兩把利劍,它們不僅能夠提升程序的性能,還能增強(qiáng)代碼的健壯性和可維護(hù)性,通過(guò)避開(kāi)本文闡述的易錯(cuò)點(diǎn),開(kāi)發(fā)者可以更加得心應(yīng)手地運(yùn)用這些特性,編寫(xiě)出既高效又優(yōu)雅的C代碼2024-06-06基于Matlab實(shí)現(xiàn)有雪花飄落的圣誕樹(shù)的繪制
圣誕節(jié)快到了(雖然還有十天),一起來(lái)用MATLAB畫(huà)個(gè)簡(jiǎn)單圣誕樹(shù)叭~代碼幾乎取消了全部的循環(huán),因此至少需要17b之后的版本,僅存的循環(huán)用來(lái)讓樹(shù)旋轉(zhuǎn)起來(lái),讓雪花飄落起來(lái),讓樹(shù)頂上的星光搖曳起來(lái)~感興趣的可以試一試2022-12-12基于OpenCV讀取攝像頭實(shí)現(xiàn)單個(gè)人臉驗(yàn)證MFC程序
這篇文章主要為大家詳細(xì)介紹了基于OpenCV讀取攝像頭實(shí)現(xiàn)單個(gè)人臉驗(yàn)證MFC程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08全面解析C++中的new,operator new與placement new
以下是C++中的new,operator new與placement new進(jìn)行了詳細(xì)的說(shuō)明介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09