您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言怎么實現打磚塊游戲”,在日常操作中,相信很多人在C語言怎么實現打磚塊游戲問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言怎么實現打磚塊游戲”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
效果如下:
代碼:
#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);//先暫停在現實符合人性化 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語言怎么實現打磚塊游戲”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。