日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产综合精品在线 | 亚洲天堂av免费在线观看 | 中文字幕在线播放视频 | 四季av日韩精品一区 | 男女做爰猛烈高潮描写 | 久久精品国产清自在天天线 | 精品成人一区二区三区 | 手机免费看av | 狠狠97| 色日韩 | 亚洲男同视频 | 国产性爱精品视频 | 91九色视频在线观看 | 亚洲一级免费毛片 | 国产精品.com | 老色批网站 | 蜜桃tv一区二区三区 | 特黄一区 | 丁香花高清在线观看完整动漫 | 制服一区| xxxx在线播放 | 第一页在线视频 | 国产亚洲精品码 | 午夜伦理福利视频 | 色窝窝无码一区二区三区成人网站 | 好吊色青青草 | 91极品尤物 | 蜜桃臀av| 中国zzji女人高潮免费 | 奇米网狠狠干 | 色欧洲| 女同性做爰全过程 | 香蕉伊人 | 人人草超碰 | 国产美女喷水 | 一区二区三区精品国产 | 亚洲丝袜天堂 | 中国一级片黄色一级片黄 | 国产福利不卡视频 | 国产成人精品一区二三区 | 一区二区三区入口 | 日韩欧美中文一区 | 日皮视频免费观看 | 国产大片一区二区 | 久久亚洲AV无码 | 中国浓毛少妇毛茸茸 | 丁香六月色婷婷 | 色精品视频| 一级片www| 中文字幕一区二区三区四区欧美 | 日韩 欧美 亚洲 | 国产二区视频在线观看 | 成人动漫在线播放 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 无码成人精品区一级毛片 | 理论片琪琪午夜电影 | 一区二区乱码 | 欧美一级做a爰片免费视频 成人激情在线观看 | 亚洲日本香蕉 | 国产成人精品综合 | www.久久艹| 国产剧情av引诱维修工 | av最新地址 | www.com日本 | 菲律宾av | 精品一区二区三区欧美 | 日韩aaaaaa | 国产精品自拍av | 亚洲香蕉在线观看 | 在线看不卡av | 亚洲天堂国产 | 国产精品成人免费精品自在线观看 | 中国国产毛片 | 亚洲AV成人无码电影在线观看 | 国产小毛片 | 久久国产精品久久久久久 | 娇小萝被两个黑人用半米长 | 国内久久久久 | 韩国女主播一区 | 老湿福利影院 | 91成人免费视频 | www.com在线观看 | 国产精品乱码久久久久久 | 高清乱码免费看污 | 涩涩涩涩涩涩涩涩涩涩 | 久久久久久少妇 | 亚洲爽爽 | 成人动作片 | 91麻豆国产福利精品 | 人妻精品一区二区三区 | 九九在线 | 91老女人| 97免费在线观看 | 色窝窝无码一区二区三区 | 久福利 | 艳妇臀荡乳欲伦交换gif | 哪里可以免费看av | 成年人免费视频观看 | 黄色国产一区二区 |