日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

项目: 用easyx实现消砖块

發(fā)布時(shí)間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目: 用easyx实现消砖块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 一、最終效果展示
  • 二、繪制靜態(tài)的擋板
  • 三、控制擋板
  • 四、消磚塊
  • 五、鼠標(biāo)交互

一、最終效果展示

效果圖如下:

這個(gè)項(xiàng)目還是有很多的細(xì)節(jié)漏洞的。例如: 邊界控制這里還是有點(diǎn)問(wèn)題的。

二、繪制靜態(tài)的擋板

代碼如下:

#include<conio.h> #include<graphics.h>#define High 480 //游戲畫(huà)面尺寸 #define Width 640//全局變量 int ball_x,ball_y;//小球的坐標(biāo) int ball_vx,ball_vy;//小球的速度 int radius;//小球的半徑 int bar_x,bar_y;//擋板的中心坐標(biāo) int bar_high,bar_width;//擋板的高度和寬度 int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標(biāo)void startup()//數(shù)據(jù)的初始化 {ball_x=Width/2;ball_y=High/2;ball_vx=1;ball_vy=1;radius=20;bar_high=High/20;bar_width=Width/5;bar_x=Width/2;bar_y=High-bar_high/2;bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;initgraph(Width,High);BeginBatchDraw(); }void clean()//顯示畫(huà)面 {setcolor(BLACK);//繪制黑線,黑色填充的圓setfillcolor(BLACK);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板 }void show()//顯示畫(huà)面 {setcolor(YELLOW);//繪制黃線,綠色填充的圓setfillcolor(GREEN);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板FlushBatchDraw();Sleep(3); }void updateWithoutInput()//與用戶(hù)輸入無(wú)關(guān)的更新 {ball_x=ball_x+ball_vx;ball_y=ball_y,ball_vy;//更新小球的坐標(biāo)if( (ball_x<=radius)||(ball_x>=Width-radius))ball_vx=-ball_vx;if( (ball_y<=radius)||(ball_y>=High-radius))ball_vy=-ball_vy; }void updateWithInput()//與用戶(hù)輸入有關(guān)的更新 {}void gameover() {EndBatchDraw();closegraph(); }int main() {startup();//數(shù)據(jù)的初始化while(1){clean();//把之前繪制的內(nèi)容清除updateWithoutInput();//與用戶(hù)輸入無(wú)關(guān)的更新updateWithInput();//與用戶(hù)輸入有關(guān)的更新show();//顯示新畫(huà)面} }

效果圖如下:

三、控制擋板

代碼如下:

#include<conio.h> #include<graphics.h>#define High 480 //游戲畫(huà)面尺寸 #define Width 640//全局變量 int ball_x,ball_y;//小球的坐標(biāo) int ball_vx,ball_vy;//小球的速度 int radius;//小球的半徑 int bar_x,bar_y;//擋板的中心坐標(biāo) int bar_high,bar_width;//擋板的高度和寬度 int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標(biāo)void startup()//數(shù)據(jù)的初始化 {ball_x=Width/2;ball_y=High/2;ball_vx=1;ball_vy=1;radius=20;bar_high=High/20;bar_width=Width/5;bar_x=Width/2;bar_y=High-bar_high/2;bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;initgraph(Width,High);BeginBatchDraw(); }void clean()//顯示畫(huà)面 {setcolor(BLACK);//繪制黑線,黑色填充的圓setfillcolor(BLACK);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板 }void show()//顯示畫(huà)面 {setcolor(YELLOW);//繪制黃線,綠色填充的圓setfillcolor(GREEN);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板FlushBatchDraw();Sleep(3); }void updateWithoutInput()//與用戶(hù)輸入無(wú)關(guān)的更新 {//擋板和小球碰撞,小球反彈if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))if((ball_x>=bar_left)&&(ball_x<=bar_right))ball_vy=-ball_vy;ball_x=ball_x+ball_vx;ball_y=ball_y,ball_vy;//更新小球的坐標(biāo)if( (ball_x<=radius)||(ball_x>=Width-radius))ball_vx=-ball_vx;if( (ball_y<=radius)||(ball_y>=High-radius))ball_vy=-ball_vy; }void updateWithInput()//與用戶(hù)輸入有關(guān)的更新 {char input;if(kbhit()){input=getch();if(input=='a'&&bar_left>0){bar_x=bar_x-15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}if(input=='d'&&bar_right<Width){bar_x=bar_x+15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}if(input=='w'&&bar_top>0){bar_y=bar_y-15;//位置左移bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;}if(input=='s'&&bar_bottom<High){bar_y=bar_y+15;//位置右移bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;}} }void gameover() {EndBatchDraw();closegraph(); }int main() {startup();//數(shù)據(jù)的初始化while(1){clean();//把之前繪制的內(nèi)容清除updateWithoutInput();//與用戶(hù)輸入無(wú)關(guān)的更新updateWithInput();//與用戶(hù)輸入有關(guān)的更新show();//顯示新畫(huà)面} }

效果圖如下:

四、消磚塊


代碼如下:

#include<conio.h> #include<graphics.h>#define High 480 //游戲畫(huà)面尺寸 #define Width 640 #define Brick_num 10//全局變量 int ball_x,ball_y;//小球的坐標(biāo) int ball_vx,ball_vy;//小球的速度 int radius;//小球的半徑 int bar_x,bar_y;//擋板的中心坐標(biāo) int bar_high,bar_width;//擋板的高度和寬度 int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標(biāo)int isBrickExisted[Brick_num];//每個(gè)磚塊是否存在,1為存在,0為沒(méi)有了 int brick_high,brick_width;//每個(gè)磚塊的高度和寬度void startup()//數(shù)據(jù)的初始化 {ball_x=Width/2;ball_y=High/2;ball_vx=1;ball_vy=1;radius=20;bar_high=High/20;bar_width=Width/5;bar_x=Width/2;bar_y=High-bar_high/2;bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;brick_width=Width/Brick_num;brick_high=High/Brick_num;int i;for(i=0;i<Brick_num;i++)isBrickExisted[i]=1;initgraph(Width,High);BeginBatchDraw(); }void clean()//顯示畫(huà)面 {setcolor(BLACK);//繪制黑線,黑色填充的圓setfillcolor(BLACK);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_top=0;brick_bottom=brick_high;if(!isBrickExisted[i])//磚塊沒(méi)有了,繪制黑色fillrectangle(brick_left,brick_top,brick_right,brick_bottom);} }void show()//顯示畫(huà)面 {setcolor(YELLOW);//繪制黃線,綠色填充的圓setfillcolor(GREEN);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_top=0;brick_bottom=brick_high;if(isBrickExisted[i])//磚塊存在,繪制磚塊{setcolor(WHITE);setfillcolor(RED);fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//繪制磚塊}}FlushBatchDraw();Sleep(3); }void updateWithoutInput()//與用戶(hù)輸入無(wú)關(guān)的更新 {//擋板和小球碰撞,小球反彈if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))if((ball_x>=bar_left)&&(ball_x<=bar_right))ball_vy=-ball_vy;ball_x=ball_x+ball_vx;ball_y=ball_y+ball_vy;//更新小球的坐標(biāo)//小球和邊界碰撞if( (ball_x<=radius)||(ball_x>=Width-radius))ball_vx=-ball_vx;if( (ball_y<=radius)||(ball_y>=High-radius))ball_vy=-ball_vy;//判斷小球是否和某個(gè)磚塊碰撞int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){if(isBrickExisted[i])//磚塊存在才判斷{brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_bottom=brick_high;if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=brick_right)){isBrickExisted[i]=0;ball_vy=-ball_vy;}}} }void updateWithInput()//與用戶(hù)輸入有關(guān)的更新 {char input;if(kbhit()){input=getch();if(input=='a'&&bar_left>0){bar_x=bar_x-15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}if(input=='d'&&bar_right<Width){bar_x=bar_x+15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}} }void gameover() {EndBatchDraw();closegraph(); }int main() {startup();//數(shù)據(jù)的初始化while(1){clean();//把之前繪制的內(nèi)容清除updateWithoutInput();//與用戶(hù)輸入無(wú)關(guān)的更新updateWithInput();//與用戶(hù)輸入有關(guān)的更新show();//顯示新畫(huà)面} }

效果圖如下:

五、鼠標(biāo)交互


先看一個(gè)關(guān)于鼠標(biāo)交互的實(shí)例

#include<graphics.h> #include<conio.h> int main(void) {initgraph(640,480);//初始化圖形窗口MOUSEMSG m;//定義鼠標(biāo)消息while(1){m=GetMouseMsg();//獲取一條鼠標(biāo)消息if(m.uMsg==WM_MOUSEMOVE){putpixel(m.x,m.y,WHITE);//鼠標(biāo)移動(dòng)的時(shí)候畫(huà)小白點(diǎn)}else if(m.uMsg==WM_LBUTTONDOWN){rectangle(m.x-5,m.y-5,m.x+5,m.y+5);//鼠標(biāo)左鍵按下時(shí)在鼠標(biāo)位置畫(huà)一個(gè)方塊}else if(m.uMsg==WM_RBUTTONUP){circle(m.x,m.y,10);//鼠標(biāo)右鍵按下時(shí)在鼠標(biāo)位置畫(huà)一個(gè)圓}}return 0; } 用鼠標(biāo)控制擋板移動(dòng),按鼠標(biāo)左鍵初始化小球位置

代碼如下:

#include<conio.h> #include<graphics.h>#define High 480 //游戲畫(huà)面尺寸 #define Width 640 #define Brick_num 10//全局變量 int ball_x,ball_y;//小球的坐標(biāo) int ball_vx,ball_vy;//小球的速度 int radius;//小球的半徑 int bar_x,bar_y;//擋板的中心坐標(biāo) int bar_high,bar_width;//擋板的高度和寬度 int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標(biāo)int isBrickExisted[Brick_num];//每個(gè)磚塊是否存在,1為存在,0為沒(méi)有了 int brick_high,brick_width;//每個(gè)磚塊的高度和寬度void startup()//數(shù)據(jù)的初始化 {ball_x=Width/2;ball_y=High/2;ball_vx=1;ball_vy=1;radius=20;bar_high=High/20;bar_width=Width/5;bar_x=Width/2;bar_y=High-bar_high/2;bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;brick_width=Width/Brick_num;brick_high=High/Brick_num;int i;for(i=0;i<Brick_num;i++)isBrickExisted[i]=1;initgraph(Width,High);BeginBatchDraw(); }void clean()//顯示畫(huà)面 {setcolor(BLACK);//繪制黑線,黑色填充的圓setfillcolor(BLACK);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_top=0;brick_bottom=brick_high;if(!isBrickExisted[i])//磚塊沒(méi)有了,繪制黑色fillrectangle(brick_left,brick_top,brick_right,brick_bottom);} }void show()//顯示畫(huà)面 {setcolor(YELLOW);//繪制黃線,綠色填充的圓setfillcolor(GREEN);fillcircle(ball_x,ball_y,radius);bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_top=0;brick_bottom=brick_high;if(isBrickExisted[i])//磚塊存在,繪制磚塊{setcolor(WHITE);setfillcolor(RED);fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//繪制磚塊}}FlushBatchDraw();Sleep(3); }void updateWithoutInput()//與用戶(hù)輸入無(wú)關(guān)的更新 {//擋板和小球碰撞,小球反彈if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))if((ball_x>=bar_left)&&(ball_x<=bar_right))ball_vy=-ball_vy;ball_x=ball_x+ball_vx;ball_y=ball_y+ball_vy;//更新小球的坐標(biāo)//小球和邊界碰撞if( (ball_x<=radius)||(ball_x>=Width-radius))ball_vx=-ball_vx;if( (ball_y<=radius)||(ball_y>=High-radius))ball_vy=-ball_vy;//判斷小球是否和某個(gè)磚塊碰撞int i,brick_left,brick_right,brick_top,brick_bottom;for(i=0;i<Brick_num;i++){if(isBrickExisted[i])//磚塊存在才判斷{brick_left=i*brick_width;brick_right=brick_left+brick_width;brick_bottom=brick_high;if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=brick_right)){isBrickExisted[i]=0;ball_vy=-ball_vy;}}} }void updateWithInput()//與用戶(hù)輸入有關(guān)的更新 {/*char input;if(kbhit()){input=getch();if(input=='a'&&bar_left>0){bar_x=bar_x-15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}if(input=='d'&&bar_right<Width){bar_x=bar_x+15;//位置左移bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;}}*/MOUSEMSG m;//定義鼠標(biāo)信息if(MouseHit())//這個(gè)函數(shù)用于檢測(cè)當(dāng)前是否有鼠標(biāo)消息{m=GetMouseMsg();//獲取一條鼠標(biāo)消息if(m.uMsg==WM_MOUSEMOVE){//擋板的位置等于鼠標(biāo)所在的位置bar_x=m.x;bar_y=m.y;bar_left=bar_x-bar_width/2;bar_right=bar_x+bar_width/2;bar_top=bar_y-bar_high/2;bar_bottom=bar_y+bar_high/2;}else if(m.uMsg==WM_LBUTTONDOWN){ball_x=bar_x;//初始化小球的位置為擋板上面中心ball_y=bar_top-radius-3;}} }void gameover() {EndBatchDraw();closegraph(); }int main() {startup();//數(shù)據(jù)的初始化while(1){clean();//把之前繪制的內(nèi)容清除updateWithoutInput();//與用戶(hù)輸入無(wú)關(guān)的更新updateWithInput();//與用戶(hù)輸入有關(guān)的更新show();//顯示新畫(huà)面} }

效果圖如下:

總結(jié)

以上是生活随笔為你收集整理的项目: 用easyx实现消砖块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品国产乱码久久久久久预案 | 天堂8在线视频 | 色小说在线 | 亚洲综合视频在线播放 | 天天上天天干 | 九色视频自拍 | 人人做人人爱人人爽 | 91免费高清在线观看 | av色哟哟| www在线看| 成人在线观看av | 性饥渴的农村熟妇 | 亚洲欧美另类日韩 | 男女互操在线观看 | 精品一性一色一乱农村 | 国产又粗又长又硬免费视频 | 蜜桃又黄又粗又爽av免 | 韩国一级淫片免费看 | 4438五月天 | 精品一区免费 | 熟女一区二区三区视频 | 丰满人妻一区二区三区免费 | 九草网| 天堂成人在线观看 | 超碰在线最新地址 | 成人欧美一区二区三区 | 国产免费av观看 | 国产精品久久久91 | 欧美大片免费观看网址 | 色999在线观看 | 中国女人黄色大片 | 成人黄色av| 成人欧美在线视频 | 神马久久久久久久久久 | 亚洲中文字幕97久久精品少妇 | 综合激情婷婷 | 久久精品国产一区二区三区 | 91精品在线观看入口 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 成人深夜福利 | 99热97| 超碰不卡| 亚洲国产精品无码久久久 | 欧美日韩丝袜 | 精品中文字幕在线播放 | 国产精品国产三级国产aⅴ原创 | 豆花免费跳转入口官网 | 欧美男人操女人 | 毛片免费播放 | 亚洲一区国产精品 | 一级片在线观看视频 | 都市激情一区 | 不卡中文一二三区 | 国内偷拍久久 | 日韩国产成人在线 | 色婷婷一区二区三区 | 欧洲mv日韩mv国产 | 青青国产视频 | 欧美日韩成人精品 | 波多野吉衣毛片 | 久久久成人精品 | 国产精品成av人在线视午夜片 | 男女啪啪免费 | 丁香五色月 | 就去色av | 欧美xxx在线观看 | 97香蕉久久夜色精品国产 | 蜜桃视频色 | 日韩色在线 | 一级色网站 | 91干 | 一道本在线观看视频 | 在线观看麻豆视频 | 日本xxxxwww| aaa黄色片 | 日本91网站 | 亚洲v欧美v | 国产日韩一区二区 | 欧美jizzhd欧美18 | 日本伊人影院 | 久热这里只有 | 精品乱子一区二区三区 | 日本色网址 | 欧美亚日韩 | 欧美一级片在线观看 | 少妇视频网站 | 五月天色站 | 亚洲熟妇国产熟妇肥婆 | 一级免费观看视频 | 91肉色超薄丝袜脚交一区二区 | 99精品国产免费 | www.97视频 | 含羞草一区二区三区 | 福利一区在线观看 | 成人性生生活性生交全黄 | 特级西西人体444www | 精品日韩欧美 | 日韩成人影视 | 亚洲逼图 |