c语言实现简单俄罗斯方块
一、摘要
目的:做一個(gè)俄羅斯方塊,能基本實(shí)現(xiàn)變換形態(tài)、方塊顏色變化、行滿消除。
二、過程
基于c語言寫一個(gè)俄羅斯方塊,由于本人比較菜,有借鑒別人的代碼,下面是項(xiàng)目的一些代碼和效果。
- 總體效果
- 代碼注釋
1. 主函數(shù),開始是初始屏幕的設(shè)置,打印游戲界面的邊框,游戲提示。BlockRand()函數(shù)隨機(jī)產(chǎn)生一種形態(tài)的方塊。
2. 初始化界面,畫地圖,上下左右打印方塊形成邊界,其他為空格。
void DeawMap() {for (int i = 0; i < WIDTH; i++)PRINTF LINE ?//上邊框for (int i = 1; i < HEIGHT - 1; i++) ? ? ? ? ?//打印左右邊框{for (int j = 0; j < WIDTH; j++){if (j == 0 || j == WIDTH - 1){PRINTF?? ?//打印方塊的宏定義if (j == WIDTH - 1)LINE}else EMPTY?? ?//打印空格的宏定義}}for (int i = 0; i < WIDTH; i++)PRINTF LINE ?//下邊框system("color 03");//屏幕顯示顏色 }3.俄羅斯方塊要隨機(jī)產(chǎn)生一種形態(tài)的方塊,主要用到了srand()函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù),srand和rand()配合使用產(chǎn)生偽隨機(jī)數(shù)序列。
Tetris* BlockRand(int code_y) {srand((int)time(0));Tetris* Block = (Tetris*)malloc(sizeof(Tetris)); ? ?//用malloc動(dòng)態(tài)分配空間賦值給新指針Block->x_1 = 8;Block->y_1 = 4; //規(guī)定初始中心方塊的坐標(biāo)為(8,4)Block->code = code_y;if (Phead == NULL)?? ?Phead = Block;?? ??? ?//用鏈表儲(chǔ)存數(shù)據(jù)else Pend->next = Block;Block->next = NULL;Pend = Block;return Block; }
4.按鍵響應(yīng),調(diào)用GetAsyncKeystate()函數(shù)對(duì)按鍵操作進(jìn)行響應(yīng),就是調(diào)用GetAsyncKeystate函數(shù)得到某個(gè)按鍵的狀態(tài),判斷返回值的最高位是不是1,如果是表示處于按下狀態(tài)。
?
5.設(shè)置方塊顏色
void SetColour(int c) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);//API函數(shù)可以改變控制臺(tái)顏色 }
屏幕顏色的符號(hào)常數(shù)表
符號(hào)常數(shù)?? ? 數(shù)值 ??? ?含義? ? ? ? ?符號(hào)常數(shù)? ? ? ? ? ? ? ? ?數(shù)值? ? ? ? ? ?含義
BLACK?? ??? ? ? 0?? ? ? ?黑色? ? ? ? ? DARKGRAY? ? ? ? ? ? ?8? ? ? ? ? ? ?深灰
BLUE? ? ? ? ? ? ?1? ? ? ? 蘭色? ? ? ? ? ?LIGHTBLUE? ? ? ? ? ? 9? ? ? ? ? ? ?深蘭
GREEN? ? ? ? ? 2?? ??? ?綠色? ? ? ? ? ?LIGHTGREEN? ? ? ?10? ? ? ? ? ? 淡綠
CYAN? ? ? ? ? ? ?3?? ??? ?青色? ? ? ? ? ?LIGHTCYAN? ? ? ? ? 11? ? ? ? ? ??淡青
RED? ? ? ? ? ? ? ?4?? ??? ?紅色? ? ? ? ? ?LIGHTRED? ? ? ? ? ? 12? ? ? ? ? ? ?淡紅
MAGENTA?? ? 5?? ??? ?洋紅? ? ? ? ? ?LIGHTMAGENTA? ?13? ? ? ? ? ? 淡洋紅
BROWN? ? ? ? ?6?? ??? 棕色? ? ? ? ? ?YELLow? ? ? ? ? ? ? ? ? 14? ? ? ? ? ? ?黃色
LIGHTGRAY? ?7? ? ? ?淡灰? ? ? ? ???WHITE? ? ? ? ? ? ? ? ? ?15? ? ? ? ?? ? 白色
本內(nèi)容轉(zhuǎn)載至:
http://blog.bools.cn/archives/581
總結(jié)
以上是生活随笔為你收集整理的c语言实现简单俄罗斯方块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能家居 (2) ——设计模式的引入
- 下一篇: 网页排版出现空白