最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)反彈球消磚塊游戲

 更新時(shí)間:2022年03月31日 15:29:19   作者:summery456  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)反彈球消磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)反彈球消磚塊游戲的具體代碼,供大家參考,具體內(nèi)容如下

1.目標(biāo)要求:

1.擊中上方方塊’H’,分?jǐn)?shù)加1
2.下方控制線沒有接到小球時(shí),游戲結(jié)束

2.C語言代碼:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>

/*
? ? ?? ?《反彈球消磚塊》?? ?by:你最珍貴
? ? ?? ?
?? ??? ??? ? ———————————
?? ??? ??? ?|控制信號(hào): | 左 | 右 |
?? ??? ??? ? ———————————?
?? ??? ??? ?| ? ?鍵盤: | ?j | ?l |?
?? ??? ??? ? ———————————
?? ??
?? ? 1.擊中上方方塊'H',分?jǐn)?shù)加1 ?
?? ? 2.下方控制線沒有接到小球時(shí),游戲結(jié)束?

*/

void HideCursor(){?? ?//隱藏光標(biāo)位置 ,這個(gè)函數(shù)復(fù)制代碼就行?
?? ?CONSOLE_CURSOR_INFO cursor_info={1,0};?
?? ?SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void gotoxy(int x,int y){?? ?//把光標(biāo)放在(0,0)位置 ,這個(gè)函數(shù)復(fù)制代碼就行
?? ?HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
?? ?COORD pos;
?? ?pos.X = x;
?? ?pos.Y = y;
?? ?SetConsoleCursorPosition(handle,pos);
}?

int IsEnd;//是否結(jié)束?
int interface_x,interface_y;//界面行數(shù)、列數(shù)?
int block_y;//磚塊列位置?
int ctrlline_width,ctrlline_left,ctrlline_right;//控制線的左列數(shù),寬度,右列數(shù)?
int ball_x,ball_y;//小球位置?
int ballv_x,ballv_y; //小球行列速度(1為正方向-1為反方向)
int scores;//分?jǐn)?shù)?
int ballv_num;//小球速度的慢速變量,數(shù)值越大越慢?
int ballv_num_i;//小球慢速變量值的循環(huán)變量?

void startup(){?? ?//【數(shù)據(jù)初始化】?
?? ?HideCursor();//不顯示光標(biāo)?
?? ?IsEnd = 0;
?? ?interface_x = 22;
?? ?interface_y = 30;
?? ?block_y = rand()%(interface_y-6)+2;?
?? ?ctrlline_width=8;
?? ?ctrlline_left=(interface_y-ctrlline_width-2)/2+1+1;//控制線最左列位置?
?? ?ctrlline_right=ctrlline_left+ctrlline_width-1;?
?? ?ball_x=interface_x-1;
?? ?ball_y=ctrlline_left+ctrlline_width/2;?
?? ?ballv_x=1;
?? ?ballv_y=1;
?? ?scores=0;
?? ?ballv_num=3;?
?? ?ballv_num_i=1;?
}
void show_begin(){//【初始頁面展示】?
?? ?int i,j;
?? ?int start=0;
?? ?char input;
??? ?while(!start){
??? ??? ?gotoxy(0,0);//每次輸出頁面把鼠標(biāo)放回(0,0)?
??? ??? ?for(i=1;i<=interface_x/2-4;i++) printf("\n");?
?? ??? ?for(i=1;i<interface_y/2-8;i++) printf(" ");
?? ??? ?printf("《反彈球消磚塊》\n\n");
?? ??? ?for(i=1;i<interface_y/2-9;i++) printf(" ");
?? ??? ?printf("請按任意鍵開始游戲\n\n");
?? ??? ?for(i=1;i<=interface_x/2-6;i++) printf("\n");
?? ??? ?if(kbhit()){
?? ??? ??? ?input = getch();
?? ??? ??? ?if(input) start=1;
?? ??? ?}
?? ?}
}?
void show(){?? ?//【顯示畫面】?
?? ?gotoxy(0,0);//每次輸出頁面把鼠標(biāo)放回(0,0)?
?? ?int i,j;
?? ?for(i=1;i<=interface_y/2-8;i++) printf(" ");
?? ?printf("《反彈球消磚塊》") ;
?? ?for(i=1;i<=interface_y/2-8-8;i++) printf(" ");
?? ?printf("分?jǐn)?shù):%3d\n",scores);
?? ?for(i=1;i<=interface_x;i++){
?? ??? ?printf(" ");//使屏幕對稱加的空格?
?? ??? ?for(j=1;j<=interface_y;j++){?? ??? ??? ?
?? ??? ??? ?if(j==1||j==interface_y){?? ?//邊框?
?? ??? ??? ??? ?printf("|");
?? ??? ??? ?}else if(i==interface_x){?? ?//邊框?
?? ??? ??? ??? ?printf("_");
?? ??? ??? ?}else if(i==1){?? ??? ?//上邊界?
?? ??? ??? ??? ?printf("V");
?? ??? ??? ?}else if(i==interface_x-1&&(j>=ctrlline_left&&j<=ctrlline_right)){?? ?//控制線?
?? ??? ??? ??? ?printf("*");
?? ??? ??? ?}else if(i==2&&(j>=block_y&&j<=block_y+4)){?? ??? ?//磚塊?
?? ??? ??? ??? ?printf("H");
?? ??? ??? ?}else if(i==ball_x&&j==ball_y){?? ??? ?//反彈球?
?? ??? ??? ??? ?printf("O");
?? ??? ??? ?}else printf(" ");?? ?//什么也不是的位置輸出空格?
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
?? ?
}
void update_outinput(){?? ?//【與輸入無關(guān)的更新】?
?? ?ballv_num_i= (ballv_num_i==ballv_num)?1:ballv_num_i+1;//ballv_num_i一次從{1到ballv_num}循環(huán),當(dāng)ballv_num_i為最大時(shí)才更新球的位置,此目的是減速?
?? ?if(ballv_num_i==ballv_num){
?? ??? ?if(ball_y==2||ball_y==interface_y-1){//判斷是否到左右邊界?
?? ??? ??? ?ballv_y *= -1;
?? ??? ?}
?? ??? ?if(ball_x==2){//判斷是否到上邊界
?? ??? ??? ?if(ball_y>=block_y&&ball_y<=block_y+4){//判斷在上邊界有無消去磚塊?
?? ??? ??? ??? ?block_y = rand()%(interface_y-6)+2;//消去則磚塊位置重置?
?? ??? ??? ??? ?scores++;//分?jǐn)?shù)加1
?? ??? ??? ??? ?printf("\a");//提示音?
?? ??? ??? ?}
?? ??? ??? ?ballv_x *= -1;//不論是否碰磚塊,都要反彈?
?? ??? ?}
?? ??? ?if(ball_x==interface_x-1){//判斷是否下邊界接住小球了,若接住反彈,否則結(jié)束游戲?
?? ??? ??? ?if(ball_y>=ctrlline_left && ball_y<=ctrlline_right){
?? ??? ??? ??? ?ballv_x *= -1;
?? ??? ??? ?}else{
?? ??? ??? ??? ?IsEnd = 1;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?ball_x += ballv_x;
?? ??? ?ball_y += ballv_y;
?? ?}?? ?
}
void update_input(){//【與輸入有關(guān)的更新】?
?? ?char input;
?? ?if(kbhit()){
?? ??? ?input = getch();
?? ??? ?if( input == 'j'){//輸入“j”下方控制線左移?
?? ??? ??? ?ctrlline_left= (ctrlline_left==2)?2:ctrlline_left-1;
?? ??? ??? ?ctrlline_right= ctrlline_left+ctrlline_width-1;
?? ??? ?}else if( input == 'l'){//輸入“l(fā)”下方控制線右移?
?? ??? ??? ?ctrlline_left= (ctrlline_left==interface_y-ctrlline_width)?\
interface_y-ctrlline_width:ctrlline_left+1;
?? ??? ??? ?ctrlline_right= ctrlline_left+ctrlline_width-1;
?? ??? ?}
?? ?}
}
void show_end(){//【顯示失敗界面】?
?? ?system("cls");?
?? ?printf("\n\n\n\n\n\ngame over!\n\n\n\n\n\n\n\n\n\n\n\n\n");?? ?
?? ?system("pause");//暫停?
?? ?system("pause");//暫停
}

int main(){
?? ?startup();?? ?//數(shù)據(jù)初始化
?? ?show_begin();//初始頁面?
?? ?while(!IsEnd){?? ?//游戲循環(huán)執(zhí)行?
?? ??? ?show();?? ?// 顯示畫面?
?? ??? ?update_outinput();?? ?//與輸入無關(guān)的更新?
?? ??? ?update_input();?? ?//與輸入有關(guān)的更新?
?? ?}
?? ?show_end(); //顯示失敗界面?
?? ?return 0;
}

3.運(yùn)行結(jié)果:

小游戲玩法:

 《反彈球消磚塊》by:你最珍貴

     ————————————————————
    |控制信號(hào): | 左 | 右 |
     ———————————————————— 
    |   鍵盤:  |  j |  l | 
     ————————————————————

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言深入探索動(dòng)態(tài)內(nèi)存分配的使用

    C語言深入探索動(dòng)態(tài)內(nèi)存分配的使用

    給數(shù)組分配多大的空間?你是否和初學(xué)C時(shí)的我一樣,有過這樣的疑問。這一期就來聊一聊動(dòng)態(tài)內(nèi)存的分配,讀完這篇文章,你可能對內(nèi)存的分配有一個(gè)更好的理解
    2022-04-04
  • C++編寫LINUX守護(hù)進(jìn)程的實(shí)現(xiàn)代碼

    C++編寫LINUX守護(hù)進(jìn)程的實(shí)現(xiàn)代碼

    這篇文章主要介紹了如何使用C++實(shí)現(xiàn)LINUX守護(hù)進(jìn)程,文中代碼非常詳細(xì),供大家學(xué)習(xí)參考,感興趣的小伙伴可以了解下
    2020-06-06
  • C++ 自定義控件的移植問題

    C++ 自定義控件的移植問題

    這篇文章主要介紹了C++ 自定義控件的移植問題,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 基于C語言實(shí)現(xiàn)的掃雷游戲代碼

    基于C語言實(shí)現(xiàn)的掃雷游戲代碼

    這篇文章主要介紹了基于C語言實(shí)現(xiàn)的掃雷游戲代碼,對于學(xué)習(xí)游戲開發(fā)的朋友有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • 淺談c++ 字符類型總結(jié)區(qū)別wchar_t,char,WCHAR

    淺談c++ 字符類型總結(jié)區(qū)別wchar_t,char,WCHAR

    下面小編就為大家?guī)硪黄獪\談c++ 字符類型總結(jié)區(qū)別wchar_t,char,WCHAR。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • C++基于socket編程實(shí)現(xiàn)聊天室功能

    C++基于socket編程實(shí)現(xiàn)聊天室功能

    這篇文章主要介紹了C++基于socket編程實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++中map和set的使用及示例

    C++中map和set的使用及示例

    map和set是STL容器中的部分,本文主要介紹了C++中map和set的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • 淺析char 指針變量char *=p 這個(gè)語句的輸出問題

    淺析char 指針變量char *=p 這個(gè)語句的輸出問題

    下面小編就為大家?guī)硪黄獪\析char 指針變量char *=p 這個(gè)語句的輸出問題。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • C++中Covariant返回值類型詳解

    C++中Covariant返回值類型詳解

    這篇文章主要介紹了C++中Covariant返回值類型詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以可以參考一下
    2022-09-09
  • C++ find函數(shù)及用法小結(jié)

    C++ find函數(shù)及用法小結(jié)

    string類的find()函數(shù)用于在字符串中查找字符或子串,返回第一個(gè)匹配的位置,C++中的find()函數(shù)有多種用法,本文通過實(shí)例代碼給大家詳細(xì)講解,感興趣的朋友一起看看吧
    2023-12-12

最新評論

河北区| 惠来县| 抚州市| 开远市| 左权县| 辽中县| 鹿邑县| 蓬溪县| 正蓝旗| 泰兴市| 千阳县| 固阳县| 古丈县| 会理县| 甘孜| 北海市| 新源县| 张北县| 邵武市| 东平县| 丰都县| 南川市| 广东省| 胶州市| 辽阳市| 广平县| 阿克苏市| 太康县| 浙江省| 玉树县| 合水县| 兴安县| 浦江县| 拜城县| 南昌县| 阜新| 额尔古纳市| 略阳县| 雷山县| 庆元县| 石棉县|