问答1 问答5 问答50 问答500 问答1000

C++教程:俄罗斯方块源码+注释+解答

提问网友 发布时间:2025-01-15 05:22
声明声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-15 06:24
俄罗斯方块(Tetris,俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。

顾名思义,俄罗斯方块自然是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是"四",而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。

俄罗斯方块源码

#include

#include

#include

/*#define SUSHU 101

oid ab(int *b, int *c){

int p = *b;

*b = *c; //c = 11 b = 10 b = 11 p = 10

*c = p;

}

*/

#include

char LEETER[4][5][5] = {

{

0, 1, 0, 0, 0, //表示字母L

0, 1, 0, 0, 0,

0, 1, 0, 0, 0,

0, 1, 0, 0, 0,

0, 1, 1, 1, 0

}, {

0, 0, 1, 0, 0, //表示字母O

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 0, 1, 0, 0

}, {

0, 1, 0, 1, 0, //表示字母V

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 0, 1, 0, 0

}, {

0, 1, 1, 1, 0, //表示字母E

0, 1, 0, 0, 0,

0, 1, 1, 1, 0,

0, 1, 0, 0, 0,

0, 1, 1, 1, 0

}

};

int status = 1; //控制线程函数的运行状态

int speed = 500; //控制字符变换的速度

HANDLE hout; //控制台标准输出的句柄

CONSOLE_SCREEN_BUFFER_INFO csbi; //控制台屏幕缓冲区信息结构体

char *symbol[] = { "☆", "★", "●", "◆", "▲", "■", "□" }; //字母符号☆mm

WORD attrbute[] = {

FOREGROUND_RED | FOREGROUND_INTENSITY, //红色

FOREGROUND_BLUE | FOREGROUND_INTENSITY, //蓝色

FOREGROUND_GREEN | FOREGROUND_INTENSITY //绿色

};

void drawLetter()

{

int i, j, c;

COORD pos; //光标的坐标

DWORD len; //实际填充字符属性的个数

for (c = 0; c < sizeof LEETER / sizeof LEETER[0]; ++c)

{

for (i = 0; i < 5; ++i)

{

pos.X = c * 5 * 2;

pos.Y = i;

SetConsoleCursorPosition(hout, pos);

for (j = 0; j < 5; ++j)

{

if (LEETER[c][i][j])

{

GetConsoleScreenBufferInfo(hout, &csbi);

printf("%s", symbol[rand() % (sizeof symbol / sizeof symbol[0])]);

FillConsoleOutputAttribute(hout,

attrbute[rand() % (sizeof attrbute / sizeof attrbute[0])],

2, csbi.dwCursorPosition, &len);

}

else

{

printf(" "); //两个空格

}

}

}

}

}

DWORD WINAPI ThreadProc(LPVOID lpParam) //线程处理函数

{

while (1)

{

if (status)

{

drawLetter(); //画字符

Sleep(speed);

}

}

return 0;

}

int main()

{

int ctrl; //控制游戏

hout = GetStdHandle(STD_OUTPUT_HANDLE);

HANDLE hThread; //线程句柄

srand((unsigned)time(0)); //初始化随机种子

hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);

CloseHandle(hThread);

while (1)

{

ctrl = _getch();

if (ctrl == 'q')

break;

else if (ctrl == 'w')

{

if (speed < 500)

speed += 50;

}

else if (ctrl == 's')

{

if (speed > 50)

speed -= 50;

}

else if (ctrl == 'p')

status = 0;

else if (ctrl == 'c')

status = 1;

}

return 0;

本文摘自: cdtedu.com/c/course/844...,如有侵权,请联系我!

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

抖音仅1个人可见他知道吗?抖音怎么故意让一个人刷到? 周四买什么码最好 心慌心悸怎么治 thinkpad 小红帽下面的中间键问题,求大神帮忙。。。 thinkpad的功能键有哪些 雷诺病应该看什么科 兽人bl攻略游戏求几款有兽人的游戏 圣龙集团董事长到底是谁 西藏圣龙实业有限公司怎么样? 圣龙实业集团有限公司集团简介 周口导游证什么时候开始考试?可以报名了吗? TFBOYS喜欢女生的类型各是什么 TFBOYS中的王俊凯喜欢什么样的女孩子? TFBOYS 王俊凯喜欢什么类型的女孩子? 郑州师范学院东校区附近有什么差不多的快捷酒店?别太贵的,星期五考试... 婚检是流程?自费与免费的又有什么区别? 淫羊藿配伍熟地、枸杞、杜仲、仙茅、巴戟天、山茱萸、韭菜子、肉苁蓉... ...+肉苁蓉+巴戟天泡水可否服用26岁有点早泄,无其他问题 服务器与一般电脑有什么区别服务器与普通电脑之间的区别是什么_百度知 ... 服务器主板能用双CPU吗? 一起用Go做一个小游戏(上) 用精油按摩肚子会减肥吗 ...并使这两组的乘积相等:12,18,33,35,36,65,77,104. ...两组,并使这两组数的乘积相等,分别是这几个数12,,18,33,35,36... 用什么方法,把几个数,很快分成乘积相等的两组. ...27.55.56.99,这八个数字平均分成两组,使两组数的乘积相等... ...50,60分为个数相等的两组,使这两组数的乘积相等,应怎样分法_百度知... 初二的物理问题。。。求解决 刚刚看完了爱情连续剧《豪杰春香》,想继续看部,该看什么好呢? 我还在... 未闻花名台词句子迷 求摇拽百合全集百度云 360装win10系统 360升级win10系统怎么样(360升级win10) 学街舞要具备什么条件 要学街舞必备的条件有哪些 学街舞的基本要求有哪些 中学街舞要什么具备条件 期房如何房产过户 能怎么办理期房转让手续 期房转让要如何的程序 在北京如何办理期房转让手续?