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

C語言實現(xiàn)打磚塊游戲

 更新時間:2022年05月11日 12:35:06   作者:Object_in_java  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

代碼:

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

int score;
int ball_row, ball_col;
int ball_vv, ball_vh;
int area_height, area_width;
int baffle_col, baffle_row, baffle_size;
int brick_col, brick_row;
bool isLose;

void gotoxy(int x, int y) {
?? ?HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
?? ?COORD pos;
?? ?pos.X = x;
?? ?pos.Y = y;
?? ?SetConsoleCursorPosition(handle, pos);
}
void HideCursor() {
?? ?CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
?? ?SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

void startup()
{
?? ?area_height = 20;
?? ?area_width = 40;
?? ?ball_row = area_height / 2;
?? ?ball_col = area_width / 2;
?? ?ball_vv = 1;
?? ?ball_vh = 1;

?? ?baffle_col = area_width / 2;
?? ?baffle_row = area_height - 2;
?? ?baffle_size = 8;
?? ?
?? ?brick_row = 1;
?? ?brick_col = rand() % area_width;

?? ?score = 0;
?? ?isLose = false;
}

void show()
{
?? ?gotoxy(0, 0);
?? ?int i, j;
?? ?//system("cls");
?? ?for (i = 0; i <= area_height; i++)
?? ?{
?? ??? ?for (j = 0; j <= area_width; j++)
?? ??? ?{
?? ??? ??? ?if (i == ball_row && j == ball_col)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("O");
?? ??? ??? ?}
?? ??? ??? ?else if (i == 0 || i == area_height)
?? ??? ??? ??? ?printf("-");
?? ??? ??? ?else if (j == 0 || j == area_width)
?? ??? ??? ??? ?printf("|");
?? ??? ??? ?else if (i == baffle_row && (j >= baffle_col && j <= baffle_col + baffle_size))
?? ??? ??? ??? ?printf("=");
?? ??? ??? ?else if (i == brick_row && j == brick_col)
?? ??? ??? ??? ?printf("#");
?? ??? ??? ?else printf(" ");
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
?? ?printf("score:%d\n", score);
}

void updateWithhoutInput() {
?? ?static int count = 0;

?? ?if(count % 5 == 0){
?? ??? ?ball_col += ball_vh;
?? ??? ?ball_row += ball_vv;
?? ?}
?? ?
?? ?if (ball_col == 0 + 1 || ball_col == area_width - 1)//vh changed
?? ??? ?ball_vh *= -1;
?? ?if (ball_row == 0 + 1 /*|| ball_row == area_height - 1*/)//vv changed
?? ??? ?ball_vv *= -1;
?? ?if (ball_row == baffle_row - 1 && (ball_col >= baffle_col && ball_col < baffle_col + baffle_size))//在baffle上一行就判斷碰撞。?
?? ??? ?ball_vv *= -1;
?? ?// 磚塊的左,右,下左,下,下右可以檢測到碰撞?
?? ?if ((ball_row == brick_row + 1 && (ball_col >= brick_col - 1 && ball_col <= brick_col + 1))||(ball_row == brick_row && (ball_col == brick_col - 1 || ball_col==brick_col+1))) {
?? ??? ?ball_vv *= -1;
?? ??? ?brick_row = -1;
?? ??? ?score += 10;
?? ??? ?brick_row = 1;
?? ??? ?brick_col = rand() % area_width;
?? ?}

?? ?if (ball_row >= area_height)
?? ??? ?isLose = true;
?? ??? ?
?? ?count++;
}

void updateWithInput() {


?? ?char input;
?? ?if (kbhit()) {
?? ??? ?input = getch();
?? ??? ?switch (input)
?? ??? ?{
?? ??? ?case 'a': if (baffle_col > 0 + 1)baffle_col--; break;
?? ??? ?case 'w': if (baffle_row > 0 + 1)baffle_row--; break;
?? ??? ?case 'd': if (baffle_col < area_width - baffle_size - 1)baffle_col++; break;
?? ??? ?case 's': if (baffle_row < area_height - 1)baffle_row++; break;

?? ??? ?default:
?? ??? ??? ?break;
?? ??? ?}
?? ?}
}

int Lost(){
?? ?if(ball_row > area_height)
?? ??? ?return 1;
?? ?return 0;
}

int IsFinish() {//游戲是否結束?
?? ?if (score == 100) {
?? ??? ?system("cls");
?? ??? ?printf("congretulations!!!");
?? ??? ?score = 0;
?? ??? ?_sleep(500);//先暫停在現(xiàn)實符合人性化?
?? ??? ?system("pause");
?? ??? ?return 1;
?? ?}
?? ?else if (Lost() == 1) {
?? ??? ?system("cls");
?? ??? ?printf("you have lost!!!");
?? ??? ?score = 0;
?? ??? ?_sleep(500);
?? ??? ?system("pause");
?? ??? ?return 1;
?? ?}
?? ?return 0;
}


int main()
{
?? ?HideCursor();
?? ?startup();
?? ?while (1)
?? ?{
?? ??? ?show();
?? ??? ?updateWithInput();
?? ??? ?updateWithhoutInput();
?? ??? ?if(IsFinish() == 1){
?? ??? ??? ?startup();
?? ??? ??? ?continue;
?? ??? ?}
?? ?}
?? ?return 0;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言改造通訊錄操作詳解

    C語言改造通訊錄操作詳解

    這篇文章主要介紹了C語言文件操作改造通訊錄方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • 深入理解C++內聯(lián)函數(shù)

    深入理解C++內聯(lián)函數(shù)

    這篇文章主要為大家介紹了C++內聯(lián)函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言do關鍵字的具體使用

    C語言do關鍵字的具體使用

    本篇文章主要介紹了C語言do關鍵字的具體使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • C++ STL 序列式容器與配接器的簡單使用

    C++ STL 序列式容器與配接器的簡單使用

    本文主要介紹了C++ STL 序列式容器與配接器的簡單使用,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • C++實現(xiàn)LeetCode(127.詞語階梯)

    C++實現(xiàn)LeetCode(127.詞語階梯)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(127.詞語階梯),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C++虛函數(shù)表與類的內存分布深入分析理解

    C++虛函數(shù)表與類的內存分布深入分析理解

    對C++ 了解的人都應該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-08-08
  • 最新C/C++中的new和delete的實現(xiàn)過程小結

    最新C/C++中的new和delete的實現(xiàn)過程小結

    這篇文章主要介紹了C/C++中的new和delete的實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 解析C++引用

    解析C++引用

    引用是C++引入的新語言特性,是C++常用的一個重要內容之一。在工作中發(fā)現(xiàn),許多人使用它僅僅是想當然,在某些微妙的場合,很容易出錯,究其原由,大多因為沒有搞清本源。在本篇中將對引用進行詳細討論,希望對大家更好地理解和使用引用起到拋磚引玉的作用
    2021-06-06
  • c語言顏色代碼詳解

    c語言顏色代碼詳解

    在本篇文章里小編給大家整理的是關于c語言顏色代碼的知識點內容,需要的朋友們可以參考下。
    2020-02-02
  • C++ 模版雙向鏈表的實現(xiàn)詳解

    C++ 模版雙向鏈表的實現(xiàn)詳解

    本篇文章是對C++中的模版雙向鏈表進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

白山市| 呈贡县| 黎平县| 泊头市| 内乡县| 大同县| 措美县| 延安市| 三门县| 海门市| 萝北县| 北票市| 米脂县| 东丰县| 英吉沙县| 木兰县| 旺苍县| 绍兴县| 宁化县| 农安县| 遂平县| 华蓥市| 万盛区| 巫溪县| 疏勒县| 文化| 长宁区| 海丰县| 浠水县| 津市市| 揭西县| 滨州市| 虹口区| 察隅县| 蓬溪县| 新余市| 谷城县| 信丰县| 西丰县| 花莲市| 广河县|