C語(yǔ)言實(shí)現(xiàn)反彈球小游戲
本文為大家分享了C語(yǔ)言反彈球游戲的具體代碼,供大家參考,具體內(nèi)容如下
這是利用函數(shù)寫的C語(yǔ)言小游戲,用來(lái)檢驗(yàn)自己的學(xué)習(xí)成果
反彈球的實(shí)現(xiàn)主要有幾個(gè)子函數(shù)組成
問(wèn)題也在于如何實(shí)現(xiàn)小球的下落,以及碰撞得分等情況
#include<stdio.h> #include<windows.h> #include<conio.h> //定義全局變量 int high,width; //游戲邊界 int ball_x,ball_y; //小球位置 int ball_vx,ball_vy; //小球速度 int position_x,position_y; //擋板中心坐標(biāo) int radius; //擋板半徑 int left,right; //鍵盤左右邊界 int ball_number; //反彈小球次數(shù) int block_x,block_y; //方塊的位置 int score; //消掉方塊的個(gè)數(shù) void HideCursor() //隱藏光標(biāo) { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void gotoxy(int x,int y) //光標(biāo)移動(dòng)到(x,y)位置,清屏函數(shù) { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos); } void startup() //數(shù)據(jù)初始化 { high=18; //定義邊界 width=26; ball_x=0; //小球坐標(biāo) ball_y=width/2; ball_vx=1; //小球速度方向 ball_vy=1; position_x=high-1; //擋板中心坐標(biāo) position_y=width/2; radius=5; //擋板半徑 left=position_y-radius; //鍵盤邊界 right=position_y+radius; block_x=0; //方塊位置 block_y=width/2-4; ball_number=0; //反彈小球個(gè)數(shù) score=0; //消掉小球個(gè)數(shù) HideCursor(); } void show() //顯示界面 { gotoxy(0,0); int i,j; for(i=0;i<=high;i++) { for(j=0;j<=width;j++) { if((i==ball_x) && (j==ball_y)) //輸出小球 printf("0"); else if((i==block_x)&& (j==block_y)) //輸出滑塊 //輸出下邊界 printf("@"); else if(i==high) //輸出下邊界 printf("-"); else if(j==width) //輸出右邊界 printf("|"); else if((i==high-1)&&(j>left)&&(j<right)) printf("*"); else printf(" "); } printf("\n"); } printf("反彈小球次數(shù):%d\n",ball_number); printf("消掉小球個(gè)數(shù):%d\n",score); } void updateWithoutInpute() //與用戶輸入無(wú)關(guān)的更新 { if(ball_x==position_x-1) //小球撞到擋板 { if((ball_y>=left)&&(ball_y<=right)) { ball_number++; //printf("\a"); } else { printf("游戲失敗\n"); system("pause"); exit(0); } } ball_x = ball_x + ball_vx; //小球向速度方向移動(dòng) ball_y = ball_y + ball_vy; if((ball_x==0) || (ball_x==high-2)) //小球撞到上下邊界 ball_vx=-ball_vx; if((ball_y==0) || (ball_y==width-1)) //小球撞到左右邊界 ball_vy=-ball_vy; if((block_x==ball_x) && (block_y==ball_y)) //小球撞到滑塊 { block_y=rand()%width-1; score++; } Sleep(120); } void updateWithInpute() //與用戶輸入有關(guān)的更新 { char input; if(kbhit()) { input=getch(); if((input=='a')&&(left>=0)) { position_y--; left=position_y-radius; //鍵盤邊界 right=position_y+radius; } if((input=='d')&&(right<width)) { position_y++; left=position_y-radius; //鍵盤邊界 right=position_y+radius; } } } int main() { system("color 2f"); //改變控制臺(tái)顏色 startup(); while(1) { show(); //顯示界面 updateWithoutInpute(); //與用戶輸入無(wú)關(guān)的更新 updateWithInpute(); //與用戶輸入有關(guān)的更新 } }
小編之前也收藏了一段代碼:C語(yǔ)言實(shí)現(xiàn)小球反彈,分享給大家
#include <stdio.h> #include <stdlib.h> #include <windows.h> void ball()//1.畫(huà)出小球 { printf("\t\t\t◎"); } int main() { int h=20;//球的高度初始化為20 int i,j;//i是用來(lái)確定球的起點(diǎn)與終點(diǎn),j是確定球的位置 int der=1;//判斷等于1時(shí)球下落,為0時(shí)球上升 while(h>0)//高度大于0時(shí),球都在動(dòng)(當(dāng)高度為0時(shí)停止) { if(der==1) { for(i=20-h;i<20;i++)//確定起點(diǎn)和終點(diǎn) 下落過(guò)程 { system("cls"); for(j=0;j<=i;j++)//確定球的位置 { printf("\n"); } ball(); Sleep(50); } der=0; } else { h=h*8/9;//強(qiáng)起來(lái)高度是原來(lái)的9分之8 for(i=20;i>=20-h;i--)//確定起點(diǎn)和終點(diǎn) 上升過(guò)程 { system("cls"); for(j=0;j<=i;j++)//確定球的位置 { printf("\n"); } ball(); Sleep(50); } der=1; } } return 0; }
以上就是本文的全部?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)簡(jiǎn)單彈球游戲
- C語(yǔ)言實(shí)現(xiàn)彈跳小球
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲
- C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有顏色彈跳小球
- C語(yǔ)言實(shí)現(xiàn)雙人反彈球游戲
相關(guān)文章
C++實(shí)現(xiàn)職工信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)職工信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++ throw關(guān)鍵字實(shí)現(xiàn)拋出異常和異常規(guī)范
本文主要介紹了C++ throw關(guān)鍵字實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08c++實(shí)現(xiàn)簡(jiǎn)單隨機(jī)數(shù)的代碼
在本篇文章里小編給大家整理的是一篇關(guān)于c++實(shí)現(xiàn)簡(jiǎn)單隨機(jī)數(shù)的代碼內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-05-05C語(yǔ)言模擬實(shí)現(xiàn)通訊錄程序過(guò)程
這篇文章主要介紹了C語(yǔ)言模擬實(shí)現(xiàn)通訊錄程序過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02通過(guò)一個(gè)小例子來(lái)簡(jiǎn)單理解C語(yǔ)言中的內(nèi)存空間管理
這篇文章主要介紹了通過(guò)一個(gè)小例子來(lái)簡(jiǎn)單理解C語(yǔ)言中的內(nèi)存空間管理,涉及到堆和棧等數(shù)據(jù)結(jié)構(gòu)的基本知識(shí),需要的朋友可以參考下2015-11-11