批处理之家's Archiver

happy886rr 发表于 2016-10-3 11:59

2016版纯批处理俄罗斯方块

[i=s] 本帖最后由 happy886rr 于 2018-11-11 13:16 编辑 [/i]

经典俄罗斯方块游戏,再次用批处理和C重写。动态显示,迅捷如闪电。预留Settings设置,参数可自行调整。

操控说明[code]
A左D右;W旋转;S加速下落;
Q退出;P暂停;方向键继续;
[/code]效果图

[2016/10/6] C语言版 C-Version 1.0[code]
@echo off
::**************Happy's Tetris C语言版******
REM 使用说明:
REM A左D右;W旋转;S加速下落;
REM Q退出;P暂停;任意键继续;

::**************Settings高级设置************
REM 设置窗体
  title &mode con cols=35 lines=25&color F0
REM 设置时钟T(毫秒)
  set T=300
REM 按键黏度N(微秒)
  set N=5
REM 设置旋转体系:填TGM 或 SRS
  set MODE=TGM

::**************Base64转码******************
:START
cls&Tetris.exe %N% %T% %MODE%&&exit /b||certutil -decode "%~f0" "%~dp0Tetris.exe"
goto START
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----[/code]源码Tetris.c
[quote][align=left][color=green][size=12pt]#include <conio.h>[/size][/color][/align][align=left][color=green][size=12pt]#include <stdio.h>[/size][/color][/align][align=left][color=green][size=12pt]#include <stdlib.h>[/size][/color][/align][align=left][color=green][size=12pt]#include <time.h>[/size][/color][/align][align=left][color=green][size=12pt]#include <Windows.h>[/size][/color][/align][align=left][i][color=green][size=12pt]/**********[/size][/color][/i][i][color=green][size=12pt]初始化参数************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=gray][size=12pt]i[/size][/color][size=12pt],[/size][color=gray][size=12pt]j[/size][/color][size=12pt],[/size][color=gray][size=12pt]N[/size][/color][size=12pt],[/size][color=gray][size=12pt]T[/size][/color][size=12pt],[/size][color=gray][size=12pt]F[/size][/color][size=12pt],[/size][color=gray][size=12pt]J[/size][/color][size=12pt],[/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=gray][size=12pt]dx[/size][/color][size=12pt],[/size][color=gray][size=12pt]dy[/size][/color][size=12pt],  [/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt],  [/size][color=gray][size=12pt]Cache1[/size][/color][size=12pt],[/size][color=gray][size=12pt]Cache2[/size][/color][size=12pt],[/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt],[/size][color=gray][size=12pt]RU[/size][/color][size=12pt],[/size][color=gray][size=12pt]RI[/size][/color][size=12pt],  [/size][color=gray][size=12pt]P_X[/size][/color][size=12pt],[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt],[/size][color=gray][size=12pt]POS_Y_MAX[/size][/color][size=12pt],  [/size][color=gray][size=12pt]LEVEL[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt],[/size][color=gray][size=12pt]SCORE[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt],  [/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=red][size=12pt]4[/size][/color][size=12pt]],  [/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=red][size=12pt]12[/size][/color][size=12pt]][[/size][color=red][size=12pt]22[/size][/color][size=12pt]],  [/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=red][size=12pt]21[/size][/color][size=12pt]],  [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]5[/size][/color][size=12pt]]={[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=red][size=12pt]1[/size][/color][size=12pt],[/size][color=red][size=12pt]0[/size][/color][size=12pt]};[/size][/align][align=left][color=blue][size=12pt]int [/size][/color][color=gray][size=12pt]TGM[/size][/color][size=12pt][[/size][color=red][size=12pt]7[/size][/color][size=12pt]][[/size][color=red][size=12pt]4[/size][/color][size=12pt]]={{[/size][color=red][size=12pt]0x159D[/size][/color][size=12pt],[/size][color=red][size=12pt]0x89AB[/size][/color][size=12pt],[/size][color=red][size=12pt]0x159D[/size][/color][size=12pt],[/size][color=red][size=12pt]0x89AB[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x126A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4856[/size][/color][size=12pt],[/size][color=red][size=12pt]0x159A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4526[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x926A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x456A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x1592[/size][/color][size=12pt],[/size][color=red][size=12pt]0x0456[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x5926[/size][/color][size=12pt],[/size][color=red][size=12pt]0x0156[/size][/color][size=12pt],[/size][color=red][size=12pt]0x5926[/size][/color][size=12pt],[/size][color=red][size=12pt]0x0156[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x4159[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4596[/size][/color][size=12pt],[/size][color=red][size=12pt]0x1596[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4156[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x156A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4152[/size][/color][size=12pt],[/size][color=red][size=12pt]0x156A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4152[/size][/color][size=12pt]}};[/size][/align][align=left][color=blue][size=12pt]int [/size][/color][color=gray][size=12pt]SRS[/size][/color][size=12pt][[/size][color=red][size=12pt]7[/size][/color][size=12pt]][[/size][color=red][size=12pt]4[/size][/color][size=12pt]]={{[/size][color=red][size=12pt]0x159D[/size][/color][size=12pt],[/size][color=red][size=12pt]0x89AB[/size][/color][size=12pt],[/size][color=red][size=12pt]0x26AE[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4567[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x0159[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4856[/size][/color][size=12pt],[/size][color=red][size=12pt]0x159A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4526[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x8159[/size][/color][size=12pt],[/size][color=red][size=12pt]0x456A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x1592[/size][/color][size=12pt],[/size][color=red][size=12pt]0x0456[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4859[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x4815[/size][/color][size=12pt],[/size][color=red][size=12pt]0x459A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x5926[/size][/color][size=12pt],[/size][color=red][size=12pt]0x0156[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x4159[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4596[/size][/color][size=12pt],[/size][color=red][size=12pt]0x1596[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4156[/size][/color][size=12pt]},{[/size][color=red][size=12pt]0x0459[/size][/color][size=12pt],[/size][color=red][size=12pt]0x8596[/size][/color][size=12pt],[/size][color=red][size=12pt]0x156A[/size][/color][size=12pt],[/size][color=red][size=12pt]0x4152[/size][/color][size=12pt]}};[/size][/align][align=left][i][color=green][size=12pt]/**********[/size][/color][/i][i][color=green][size=12pt]光标位置函数**********/[/size][/color][/i][/align][align=left][color=blue][size=12pt]void [/size][/color][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]x[/size][/color][/u][size=12pt],[/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]y[/size][/color][/u][size=12pt])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=blue][size=12pt]COORD [/size][/color][color=gray][size=12pt]pos[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=blue][size=12pt]HANDLE [/size][/color][color=gray][size=12pt]hOutput[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=gray][size=12pt]pos[/size][/color][size=12pt].[/size][color=gray][size=12pt]X[/size][/color][size=12pt]=[/size][color=red][size=12pt]2[/size][/color][size=12pt]*[/size][u][color=gray][size=12pt]x[/size][/color][/u][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=gray][size=12pt]pos[/size][/color][size=12pt].[/size][color=gray][size=12pt]Y[/size][/color][size=12pt]=[/size][u][color=gray][size=12pt]y[/size][/color][/u][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=gray][size=12pt]hOutput[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]GetStdHandle[/size][/color][size=12pt]([/size][color=#a00a0][size=12pt]STD_OUTPUT_HANDLE[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]SetConsoleCursorPosition[/size][/color][size=12pt]([/size][color=gray][size=12pt]hOutput[/size][/color][size=12pt],[/size][color=gray][size=12pt]pos[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]}[/size][/align][align=left][color=blue][size=12pt]void [/size][/color][color=#8800][size=12pt]HideCursor[/size][/color][size=12pt]()[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=blue][size=12pt]CONSOLE_CURSOR_INFO [/size][/color][color=gray][size=12pt]cursor_info[/size][/color][size=12pt]={[/size][color=red][size=12pt]1[/size][/color][size=12pt],[/size][color=red][size=12pt]0[/size][/color][size=12pt]};[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]SetConsoleCursorInfo[/size][/color][size=12pt]([/size][color=#8800][size=12pt]GetStdHandle[/size][/color][size=12pt]([/size][color=#a00a0][size=12pt]STD_OUTPUT_HANDLE[/size][/color][size=12pt]),&[/size][color=gray][size=12pt]cursor_info[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/**********[/size][/color][/i][i][color=green][size=12pt]初始化界面************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]void [/size][/color][color=#8800][size=12pt]CreatUI[/size][/color][size=12pt]()[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=blue][size=12pt]int [/size][/color][color=gray][size=12pt]i[/size][/color][size=12pt],[/size][color=gray][size=12pt]j[/size][/color][size=12pt],[/size][color=gray][size=12pt]BOUNDARY[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┏━━━━━━━━━━┓\n"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=red][size=12pt]20[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++) {[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if     [/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]==[/size][color=red][size=12pt]3[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┃          ┃LEVEL:1\n"[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]==[/size][color=red][size=12pt]5[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┃          ┃SCORE:0\n"[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]==[/size][color=red][size=12pt]7[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┃          ┃NEXT   \n"[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else         [/size][/color][size=12pt]{[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┃          ┃\n"[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]┗━━━━━━━━━━┛\n"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]" CopyRight@2016~2018 BY HAPPY\n"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=red][size=12pt]21[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]<=[/size][color=red][size=12pt]11[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                        [/size][color=gray][size=12pt]BOUNDARY[/size][/color][size=12pt]=[/size][color=gray][size=12pt]i[/size][/color][size=12pt]*([/size][color=gray][size=12pt]i[/size][/color][size=12pt]-[/size][color=red][size=12pt]11[/size][/color][size=12pt])*([/size][color=gray][size=12pt]j[/size][/color][size=12pt]-[/size][color=red][size=12pt]21[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]BOUNDARY[/size][/color][size=12pt]==[/size][color=red][size=12pt]0[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        }[/size][color=red][size=12pt]else[/size][/color][size=12pt]{[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        }               [/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/**********[/size][/color][/i][i][color=green][size=12pt]按键获取**************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]Getkey[/size][/color][size=12pt]([/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]N[/size][/color][/u][size=12pt],[/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]T[/size][/color][/u][size=12pt])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]115[/size][/color][size=12pt]){[/size][color=red][size=12pt]return 115[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]        [/size][color=blue][size=12pt]int [/size][/color][color=gray][size=12pt]start[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]clock[/size][/color][size=12pt]();[/size][/align][align=left][size=12pt]         [/size][color=red][size=12pt]do[/size][/color][size=12pt]{[/size][/align][align=left][size=12pt]                 [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=#8800][size=12pt]kbhit[/size][/color][size=12pt]()){[/size][/align][align=left][size=12pt]                         [/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]=([/size][color=blue][size=12pt]int[/size][/color][size=12pt])([/size][color=#8800][size=12pt]getch[/size][/color][size=12pt]());[/size][/align][align=left][size=12pt]                         [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]<[/size][color=red][size=12pt]97[/size][/color][size=12pt]){[/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]+=[/size][color=red][size=12pt]32[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                         [/size][color=red][size=12pt]return [/size][/color][color=gray][size=12pt]KEY_V[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                 }[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]<=[/size][u][color=gray][size=12pt]N[/size][/color][/u][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]++);[/size][/align][align=left][size=12pt]        }[/size][color=red][size=12pt]while[/size][/color][size=12pt](([/size][color=#8800][size=12pt]clock[/size][/color][size=12pt]()-[/size][color=gray][size=12pt]start[/size][/color][size=12pt])<[/size][u][color=gray][size=12pt]T[/size][/color][/u][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=gray][size=12pt]dy[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return [/size][/color][size=12pt]-[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/***********[/size][/color][/i][i][color=green][size=12pt]块体转置*************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]S[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]I[/size][/color][/u][size=12pt])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return [/size][/color][size=12pt]([/size][color=gray][size=12pt]F[/size][/color][size=12pt]==[/size][color=red][size=12pt]0[/size][/color][size=12pt])?[/size][color=gray][size=12pt]TGM[/size][/color][size=12pt][[/size][color=navy][size=12pt]S[/size][/color][size=12pt]][([/size][color=navy][size=12pt]I[/size][/color][size=12pt]+[/size][color=red][size=12pt]4[/size][/color][size=12pt])%[/size][color=red][size=12pt]4[/size][/color][size=12pt]]:[/size][color=gray][size=12pt]SRS[/size][/color][size=12pt][[/size][color=navy][size=12pt]S[/size][/color][size=12pt]][([/size][color=navy][size=12pt]I[/size][/color][size=12pt]+[/size][color=red][size=12pt]4[/size][/color][size=12pt])%[/size][color=red][size=12pt]4[/size][/color][size=12pt]];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/***********[/size][/color][/i][i][color=green][size=12pt]擦除显示*************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]x[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]y[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]CAC[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]Mode[/size][/color][/u][size=12pt])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=red][size=12pt]3[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][u][color=gray][size=12pt]CAC[/size][/color][/u][size=12pt]&[/size][color=red][size=12pt]0xF[/size][/color][size=12pt], [/size][u][color=gray][size=12pt]CAC[/size][/color][/u][size=12pt]>>=[/size][color=red][size=12pt]4[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if     [/size][/color][size=12pt]([/size][u][color=gray][size=12pt]Mode[/size][/color][/u][size=12pt]==[/size][color=red][size=12pt]1[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt](([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]>>[/size][color=red][size=12pt]2[/size][/color][size=12pt])+[/size][u][color=gray][size=12pt]x[/size][/color][/u][size=12pt],([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]&[/size][color=red][size=12pt]0x3[/size][/color][size=12pt])+[/size][u][color=gray][size=12pt]y[/size][/color][/u][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]■"[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]Mode[/size][/color][/u][size=12pt]==[/size][color=red][size=12pt]0[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt](([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]>>[/size][color=red][size=12pt]2[/size][/color][size=12pt])+[/size][u][color=gray][size=12pt]x[/size][/color][/u][size=12pt],([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]&[/size][color=red][size=12pt]0x3[/size][/color][size=12pt])+[/size][u][color=gray][size=12pt]y[/size][/color][/u][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt] "[/size][/color][size=12pt]);}[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return 0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/***********[/size][/color][/i][i][color=green][size=12pt]固化块体*************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]DoBlocks[/size][/color][size=12pt]()[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][i][color=green][size=12pt]//~~~[/size][/color][/i][i][color=green][size=12pt]游戏结束[/size][/color][/i][/align][align=left][i][color=green][size=12pt]        [/size][/color][/i][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]Y[/size][/color][size=12pt]<[/size][color=red][size=12pt]2[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                [/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=red][size=12pt]1[/size][/color][size=12pt],[/size][color=red][size=12pt]22[/size][/color][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"GAME OVER[/size][/color][color=gray][size=12pt]!"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                [/size][color=#8800][size=12pt]exit[/size][/color][size=12pt]([/size][color=red][size=12pt]0[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][i][color=green][size=12pt]//~~~[/size][/color][/i][i][color=green][size=12pt]固化块体[/size][/color][/i][/align][align=left][i][color=green][size=12pt]        [/size][/color][/i][color=gray][size=12pt]POS_Y_MAX[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt], [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]3[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=red][size=12pt]3[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]P_X[/size][/color][size=12pt]=([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]>>[/size][color=red][size=12pt]2[/size][/color][size=12pt])+[/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt]=([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]&[/size][color=red][size=12pt]0x3[/size][/color][size=12pt])+[/size][color=gray][size=12pt]Y[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]POS_Y_MAX[/size][/color][size=12pt]<[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt]){[/size][color=gray][size=12pt]POS_Y_MAX[/size][/color][size=12pt]=[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]P_X[/size][/color][size=12pt]][[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][i][color=green][size=12pt]//~~~[/size][/color][/i][i][color=green][size=12pt]关卡得分[/size][/color][/i][/align][align=left][i][color=green][size=12pt]        [/size][/color][/i][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=gray][size=12pt]Y[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=gray][size=12pt]POS_Y_MAX[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]2[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]<=[/size][color=red][size=12pt]10[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]==[/size][color=red][size=12pt]0[/size][/color][size=12pt]){[/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]2[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]2[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                        [/size][color=gray][size=12pt]SCORE[/size][/color][size=12pt]+=[/size][color=red][size=12pt]10[/size][/color][size=12pt],[/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]SCORE[/size][/color][size=12pt]==[/size][color=red][size=12pt]400[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]SCORE[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=gray][size=12pt]LEVEL[/size][/color][size=12pt]+=[/size][color=red][size=12pt]1[/size][/color][size=12pt],[/size][color=gray][size=12pt]T[/size][/color][size=12pt]-=[/size][color=red][size=12pt]100[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]4[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];      [/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][i][color=green][size=12pt]//~~~[/size][/color][/i][i][color=green][size=12pt]极品消行[/size][/color][/i][/align][align=left][i][color=green][size=12pt]        [/size][/color][/i][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]20[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]>=[/size][color=red][size=12pt]5[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]--){[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]4[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]<=[/size][color=red][size=12pt]10[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt],[/size][color=gray][size=12pt]j[/size][/color][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt] "[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]])[/size][/align][align=left][size=12pt]                {[/size][/align][align=left][size=12pt]                        [/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=gray][size=12pt]J[/size][/color][size=12pt]=[/size][color=gray][size=12pt]j[/size][/color][size=12pt]-[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]N[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]N[/size][/color][size=12pt]<=[/size][color=red][size=12pt]3[/size][/color][size=12pt];[/size][color=gray][size=12pt]N[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=gray][size=12pt]J[/size][/color][size=12pt]]){[/size][color=gray][size=12pt]J[/size][/color][size=12pt]--;}[/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                        [/size][color=gray][size=12pt]MARK[/size][/color][size=12pt][[/size][color=gray][size=12pt]J[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]<=[/size][color=red][size=12pt]10[/size][/color][size=12pt];[/size][color=gray][size=12pt]i[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=gray][size=12pt]i[/size][/color][size=12pt],[/size][color=gray][size=12pt]j[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]=[/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]i[/size][/color][size=12pt]][[/size][color=gray][size=12pt]J[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                                        [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]■"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                }[/size][color=red][size=12pt]else[/size][/color][size=12pt]{[/size][/align][align=left][size=12pt]                                        [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt] "[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                }[/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]4[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return 0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/***********[/size][/color][/i][i][color=green][size=12pt]碰撞检测*************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]CheckCollision[/size][/color][size=12pt]()[/size][/align][align=left][size=12pt]{                              [/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]for[/size][/color][size=12pt]([/size][color=gray][size=12pt]j[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]<=[/size][color=red][size=12pt]3[/size][/color][size=12pt];[/size][color=gray][size=12pt]j[/size][/color][size=12pt]++){[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]P_X[/size][/color][size=12pt]=([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]>>[/size][color=red][size=12pt]2[/size][/color][size=12pt])+[/size][color=gray][size=12pt]X[/size][/color][size=12pt]+[/size][color=gray][size=12pt]dx[/size][/color][size=12pt],[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt]=([/size][color=gray][size=12pt]P[/size][/color][size=12pt][[/size][color=gray][size=12pt]j[/size][/color][size=12pt]]&[/size][color=red][size=12pt]0x3[/size][/color][size=12pt])+[/size][color=gray][size=12pt]Y[/size][/color][size=12pt]+[/size][color=gray][size=12pt]dy[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]POINT_V[/size][/color][size=12pt][[/size][color=gray][size=12pt]P_X[/size][/color][size=12pt]][[/size][color=gray][size=12pt]P_Y[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]dx[/size][/color][size=12pt]!=[/size][color=red][size=12pt]0[/size][/color][size=12pt]){[/size][color=red][size=12pt]return 1[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]dy[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]DoBlocks[/size][/color][size=12pt]();[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=red][size=12pt]12[/size][/color][size=12pt],[/size][color=red][size=12pt]3[/size][/color][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"LEVEL[/size][/color][color=gray][size=12pt]:%-3d"[/size][/color][size=12pt],[/size][color=gray][size=12pt]LEVEL[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]Pos[/size][/color][size=12pt]([/size][color=red][size=12pt]12[/size][/color][size=12pt],[/size][color=red][size=12pt]5[/size][/color][size=12pt]);[/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"SCORE[/size][/color][color=gray][size=12pt]:%-3d"[/size][/color][size=12pt],[/size][color=gray][size=12pt]SCORE[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                [/size][color=red][size=12pt]return 2[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]119[/size][/color][size=12pt]){[/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]0[/size][/color][size=12pt]]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return 0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/***********[/size][/color][/i][i][color=green][size=12pt]循环核心*************/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]GameCycle[/size][/color][size=12pt]([/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]N[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]T[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]int [/size][/color][u][color=gray][size=12pt]F[/size][/color][/u][size=12pt])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]srand[/size][/color][size=12pt](([/size][color=blue][size=12pt]unsigned[/size][/color][size=12pt])[/size][color=gray][size=12pt]time[/size][/color][size=12pt]([/size][color=#a00a0][size=12pt]NULL[/size][/color][size=12pt]));[/size][color=gray][size=12pt]RU[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]rand[/size][/color][size=12pt]()%[/size][color=red][size=12pt]7[/size][/color][size=12pt],[/size][color=gray][size=12pt]RI[/size][/color][size=12pt]=([/size][color=#8800][size=12pt]rand[/size][/color][size=12pt]()%[/size][color=red][size=12pt]4[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]while[/size][/color][size=12pt]([/size][color=red][size=12pt]1[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]3[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=red][size=12pt]12[/size][/color][size=12pt],[/size][color=red][size=12pt]8[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]RU[/size][/color][size=12pt],[/size][color=gray][size=12pt]RI[/size][/color][size=12pt]),[/size][color=red][size=12pt]0[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                        [/size][color=gray][size=12pt]X[/size][/color][size=12pt]=[/size][color=red][size=12pt]4[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt], [/size][color=gray][size=12pt]NU[/size][/color][size=12pt]=[/size][color=gray][size=12pt]RU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]=[/size][color=gray][size=12pt]RI[/size][/color][size=12pt], [/size][color=gray][size=12pt]RU[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]rand[/size][/color][size=12pt]()%[/size][color=red][size=12pt]7[/size][/color][size=12pt],[/size][color=gray][size=12pt]RI[/size][/color][size=12pt]=([/size][color=#8800][size=12pt]rand[/size][/color][size=12pt]()%[/size][color=red][size=12pt]4[/size][/color][size=12pt]), [/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]3[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=red][size=12pt]12[/size][/color][size=12pt],[/size][color=red][size=12pt]8[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]RU[/size][/color][size=12pt],[/size][color=gray][size=12pt]RI[/size][/color][size=12pt]),[/size][color=red][size=12pt]1[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt], [/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]),[/size][color=red][size=12pt]1[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]dx[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt],[/size][color=gray][size=12pt]dy[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];      [/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]Getkey[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]N[/size][/color][/u][size=12pt],[/size][u][color=gray][size=12pt]T[/size][/color][/u][size=12pt]);[/size][/align][align=left][size=12pt]                  [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]119[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                          [/size][color=gray][size=12pt]NI[/size][/color][size=12pt]++;[/size][/align][align=left][size=12pt]                         [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]),[/size][color=red][size=12pt]2[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                }[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]旋W[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]115[/size][/color][size=12pt]){[/size][color=gray][size=12pt]dy[/size][/color][size=12pt]= [/size][color=red][size=12pt]1[/size][/color][size=12pt];}[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]下S[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]97 [/size][/color][size=12pt]){[/size][color=gray][size=12pt]dx[/size][/color][size=12pt]=-[/size][color=red][size=12pt]1[/size][/color][size=12pt];}[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]左A[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]100[/size][/color][size=12pt]){[/size][color=gray][size=12pt]dx[/size][/color][size=12pt]= [/size][color=red][size=12pt]1[/size][/color][size=12pt];}[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]右D[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]112[/size][/color][size=12pt]){[/size][color=#8800][size=12pt]getch[/size][/color][size=12pt](); }[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]暂停P[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]113[/size][/color][size=12pt]){[/size][color=red][size=12pt]return 0[/size][/color][size=12pt];}[/size][i][color=green][size=12pt]//[/size][/color][/i][i][color=green][size=12pt]退出Q[/size][/color][/i][/align][align=left][i][color=green][size=12pt]                [/size][/color][/i][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]dx[/size][/color][size=12pt]!=[/size][color=red][size=12pt]0 [/size][/color][size=12pt]|| [/size][color=gray][size=12pt]dy[/size][/color][size=12pt]!=[/size][color=red][size=12pt]0 [/size][/color][size=12pt]|| [/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]119[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                        [/size][color=red][size=12pt]if[/size][/color][size=12pt](![/size][color=#8800][size=12pt]CheckCollision[/size][/color][size=12pt]()){[/size][/align][align=left][size=12pt]                                [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]0[/size][/color][size=12pt]]){[/size][/align][align=left][size=12pt]                                        [/size][color=gray][size=12pt]NI[/size][/color][size=12pt]--,[/size][color=gray][size=12pt]FLAG[/size][/color][size=12pt][[/size][color=red][size=12pt]0[/size][/color][size=12pt]]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]),[/size][color=red][size=12pt]0[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                }[/size][/align][align=left][size=12pt]                                [/size][color=red][size=12pt]else if[/size][/color][size=12pt]([/size][color=gray][size=12pt]KEY_V[/size][/color][size=12pt]==[/size][color=red][size=12pt]119[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]-[/size][color=red][size=12pt]1[/size][/color][size=12pt]),[/size][color=red][size=12pt]0[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                }[/size][color=red][size=12pt]else[/size][/color][size=12pt]{[/size][/align][align=left][size=12pt]                                        [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]),[/size][color=red][size=12pt]0[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                }[/size][/align][align=left][size=12pt]                                [/size][color=#8800][size=12pt]Display[/size][/color][size=12pt]([/size][color=gray][size=12pt]X[/size][/color][size=12pt]+[/size][color=gray][size=12pt]dx[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt]+[/size][color=gray][size=12pt]dy[/size][/color][size=12pt],[/size][color=#8800][size=12pt]Rote[/size][/color][size=12pt]([/size][color=gray][size=12pt]NU[/size][/color][size=12pt],[/size][color=gray][size=12pt]NI[/size][/color][size=12pt]),[/size][color=red][size=12pt]1[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                                [/size][color=gray][size=12pt]X[/size][/color][size=12pt]+=[/size][color=gray][size=12pt]dx[/size][/color][size=12pt],[/size][color=gray][size=12pt]Y[/size][/color][size=12pt]+=[/size][color=gray][size=12pt]dy[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]                        }[/size][/align][align=left][size=12pt]                }[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return 0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][align=left][i][color=green][size=12pt]/**********Main[/size][/color][/i][i][color=green][size=12pt]主函数***********/[/size][/color][/i][/align][align=left][color=blue][size=12pt]int [/size][/color][color=#8800][size=12pt]main[/size][/color][size=12pt]([/size][color=blue][size=12pt]char [/size][/color][u][color=gray][size=12pt]argc[/size][/color][/u][size=12pt], [/size][color=blue][size=12pt]char[/size][/color][size=12pt]* [/size][u][color=gray][size=12pt]argv[/size][/color][/u][size=12pt][])[/size][/align][align=left][size=12pt]{[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]if[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]argc[/size][/color][/u][size=12pt]!=[/size][color=red][size=12pt]4[/size][/color][size=12pt]){[/size][/align][align=left][size=12pt]                [/size][color=#8800][size=12pt]printf[/size][/color][size=12pt]([/size][color=gray][size=12pt]"[/size][/color][color=gray][size=12pt]参数错误。\n"[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]return 1[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]        }[/size][color=red][size=12pt]else[/size][/color][size=12pt]{[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]if     [/size][/color][size=12pt](![/size][color=#8800][size=12pt]strcasecmp[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]argv[/size][/color][/u][size=12pt][[/size][color=red][size=12pt]3[/size][/color][size=12pt]],[/size][color=gray][size=12pt]"TGM"[/size][/color][size=12pt])){[/size][color=gray][size=12pt]F[/size][/color][size=12pt]=[/size][color=red][size=12pt]0[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else if[/size][/color][size=12pt](![/size][color=#8800][size=12pt]strcasecmp[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]argv[/size][/color][/u][size=12pt][[/size][color=red][size=12pt]3[/size][/color][size=12pt]],[/size][color=gray][size=12pt]"SRS"[/size][/color][size=12pt])){[/size][color=gray][size=12pt]F[/size][/color][size=12pt]=[/size][color=red][size=12pt]1[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                [/size][color=red][size=12pt]else[/size][/color][size=12pt]{[/size][color=red][size=12pt]return 2[/size][/color][size=12pt];}[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]N[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]atoi[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]argv[/size][/color][/u][size=12pt][[/size][color=red][size=12pt]1[/size][/color][size=12pt]]);[/size][/align][align=left][size=12pt]                [/size][color=gray][size=12pt]T[/size][/color][size=12pt]=[/size][color=#8800][size=12pt]atoi[/size][/color][size=12pt]([/size][u][color=gray][size=12pt]argv[/size][/color][/u][size=12pt][[/size][color=red][size=12pt]2[/size][/color][size=12pt]]);[/size][/align][align=left][size=12pt]        }[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]HideCursor[/size][/color][size=12pt]();[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]CreatUI[/size][/color][size=12pt]();[/size][/align][align=left][size=12pt]        [/size][color=#8800][size=12pt]GameCycle[/size][/color][size=12pt]([/size][color=gray][size=12pt]N[/size][/color][size=12pt],[/size][color=gray][size=12pt]T[/size][/color][size=12pt],[/size][color=gray][size=12pt]F[/size][/color][size=12pt]);[/size][/align][align=left][size=12pt]        [/size][color=red][size=12pt]return 0[/size][/color][size=12pt];[/size][/align][align=left][size=12pt]}[/size][/align][/quote]
一一一
一一一
一一一
一一一一一一一一一一一一一一一以下是批处理版本一一一一一一一一一一一一一一一一
[2016/10/4] Version 2.1新修版,修正NEXT下一个图块显示异常。采用16位数据处理,达到或接近C语言的运行速度。打造最快bat俄罗斯方块。[code]
@echo off
::**************Happy's俄罗斯方块***********
REM 使用说明:
REM A左D右;W旋转;S加速下落;
REM Q退出;P暂停;方向键继续;

::**************Settings高级设置************
REM 设置窗体
  title &setlocal enabledelayedexpansion
  mode con cols=35 lines=25&color F0
REM 开启防闪烁,用于画质增强
  set F1=1
REM 设置时钟T, 越小下落越快
  set T=190
REM 默认皮肤
  set "SKIN= ■"
REM 设置旋转体系:依次为TGM、SRS(第二代超级形码)
::set "SHAPE=0x159D0x89AB0x159D0x89AB0x126A0x48560x159A0x45260x926A0x456A0x15920x04560x48590x48590x48590x48590x59260x01560x59260x01560x41590x45960x15960x41560x156A0x41520x156A0x4152"
  set "SHAPE=0x159D0x89AB0x26AE0x45670x01590x48560x159A0x45260x81590x456A0x15920x04560x48590x48590x48590x48590x48150x459A0x59260x01560x41590x45960x15960x41560x04590x85960x156A0x4152"

::**************方向控制台******************
if "%1"=="CONTROLP" (
        title &MODE CON cols=15 lines=1
        for /l %%i in (1,1,100000) do (
                set "KEY="
                for /f "delims=" %%a in ('xcopy /W . 2^>NUL') do (
                        if not defined KEY (
                                set "KEY=%%a"&set "KEY=!KEY:~-1!"
                                echo %%i!KEY!>key.ini&if /i "!KEY!"=="Q" (exit)
                        )
                )
        )
)
start "" "%~f0" CONTROLP

::**************先导程序********************
REM 准备元素
set/a "LEVEL=1,SCORE=0, RU=!random!%%7,RI=(!random!%%4)*6"
for /l %%N in (0,24,144) do (set/a "N=%%N/24"&set "SHAPE!N!=!SHAPE:~%%N,24!")
for /l %%N in (0,1,1   ) do (set "E%%N=!SKIN:~%%N,1!")
for /l %%N in (1,1,10  ) do (set "LINES=!LINES!━"   )
for /l %%N in (1,1,300 ) do (set "SPACE=!SPACE!"    )

REM 构建显存
:DISPLAY_RAM
for /l %%j in (0,1,21) do (
        set "#[%%j]=1"
        for /l %%i in (0,1,11) do (
                set/a "BOUNDARY=(%%i)*(%%i-11)*(%%j-21)"
                if !BOUNDARY! equ 0 (set "P[%%i][%%j]=1") else (set "P[%%i][%%j]=0")
        )
)

::**************主体程序********************
REM ~~~随机块体
:RANDOM_SHAPE
set/a "NU=RU,NI=RI, RU=!random!%%7,RI=(!random!%%4)*6, X=4,Y=1"
echo RW>key.ini

REM ~~~计数面板
set "V1=!LEVEL!    "
set "V2=!SCORE!    "
set "READM[3]=LEVEL:!V1:~0,3!"
set "READM[5]=SCORE:!V2:~0,3!"
set "READM[7]=NEXT"

REM ~~~读取按键
:READKEY
set/a "Dx=0,Dy=0"
set/p KEY=<key.ini
if /i "!KEY:~-1!"=="P" (goto :READKEY)
if not "!PRE_KEY!"=="!KEY!" (
        set PRE_KEY=!KEY!
        if /i "!KEY:~-1!"=="A" (set "Dx=-1")
        if /i "!KEY:~-1!"=="D" (set "Dx=1" )
        if /i "!KEY:~-1!"=="W" (
                set "Cache=!SHAPE%NU%:~%NI%,6!"
                set/a "Xf=X,NI+=6,NI%%=24"
                REM ~~~16进制超级转码
                for /l %%j in (0,1,3) do (
                        set/a "POS[%%j]=Cache&0xF, Cache=Cache>>4" 2>NUL
                )
                if "!KEY!"=="RW" (
                        set "Cache2=!SHAPE%RU%:~%RI%,6!"
                        for /l %%J in (0,1,3) do (
                                set/a "RPOS[%%J]=Cache2&0xF, Cache2=Cache2>>4" 2>NUL
                                for /l %%I in (0,1,3) do (
                                        set "R[%%I][%%J]=0"
                                )
                        )       
                        for %%p in (!RPOS[0]!,!RPOS[1]!,!RPOS[2]!,!RPOS[3]!) do (
                                set/a "RPOS_X=%%p>>2,RPOS_Y=%%p&0x3"
                                set "R[!RPOS_X!][!RPOS_Y!]=1"
                        )
                        for /l %%J in (0,1,3) do (
                                set "TP="
                                for /l %%I in (0,1,3) do (
                                        set "TP=!TP!!R[%%I][%%J]!"
                                )
                                set "TP=!TP:0=%E0%!"
                                set "TP=!TP:1=%E1%!"
                                set/a "SN=%%J+8"
                                set "READM[!SN!]=!TP!"
                        )
                        echo WO>key.ini
                        for /l %%j in (8,1,11) do (set/a "#[%%j]=1")
                )
                goto :DATA_PROCESSING
        )
        if /i "!KEY:~-1!"=="Q" (exit)
)
if /i "!KEY:~-1!"=="S" (set "Dy=1"&goto :DATA_PROCESSING)

REM ~~~下落体系
if !Mark! equ 0 (
        set "Mark=1"
        set "T1=!time:~9,2!"
) else (
        set/a "TS=2!time:~9,2!-1!T1!"
        set/a "TS=1!TS:~-2!"
        if !TS! lss !T! (set "Dy=0") else (set/a "Dy=1,Mark=0")
)
if !Dx! equ 0 if !Dy! equ 0 (goto :READKEY)

REM ~~~数据处理
:DATA_PROCESSING
SETLOCAL
for %%p in (!POS[0]!,!POS[1]!,!POS[2]!,!POS[3]!) do (
        set/a "POS_X=(%%p>>2)+X+Dx,POS_Y=(%%p&0x3)+Y+Dy"
        set/a "CHE=P[!POS_X!][!POS_Y!]"
        if !CHE! equ 0 (
                set "P[!POS_X!][!POS_Y!]=1"
        ) else (
                if !Dx! neq 0 (
                        ENDLOCAL
                        goto :READKEY
                )
                if !Dy! equ 1 (
                        ENDLOCAL
                        if !Y! lss 2 (
                                echo GAME OVER!
                                ping -n 2 127.1>NUL
                                goto :DISPLAY_RAM
                        )
                        REM ~~~固化块体
                        set "POS_Y_MAX=0"
                        for %%P in (!POS[0]!,!POS[1]!,!POS[2]!,!POS[3]!) do (
                                set/a "POS_X=(%%P>>2)+X,POS_Y=(%%P&0x3)+Y"
                                if !POS_Y_MAX! lss !POS_Y! (set "POS_Y_MAX=!POS_Y!")
                                set "P[!POS_X!][!POS_Y!]=1"
                        )
                        REM ~~~关卡得分
                        for /l %%J in (!Y!,1,!POS_Y_MAX!) do (
                                set "TP="
                                for /l %%I in (1,1,10) do (
                                        set "TP=!TP!!P[%%I][%%J]!"
                                )
                                if "!TP!"=="1111111111" (
                                        set/a "SCORE+=10"
                                        set "#%%J=1"
                                        if !SCORE! equ 400 (
                                                for /l %%N in (!Y!,1,!POS_Y_MAX!) do (set "#%%N=")
                                                set/a "SCORE=0,LEVEL+=1,T-=10"
                                                goto :DISPLAY_RAM
                                        )
                                )
                        )
                        REM ~~~极品消行
                        for /l %%J in (20,-1,5) do (
                                if defined #%%J (
                                        set "#%%J="
                                        set/a "MarkJ=%%J-1, GK=1"
                                        for /l %%N in (1,1,3) do (
                                                if defined #!MarkJ! (set/a "MarkJ-=1")
                                        )
                                        set "#!MarkJ!=1"
                                        for /l %%I in (1,1,10) do (
                                                set/a "P[%%I][%%J]=P[%%I][!MarkJ!]"
                                        )
                                )
                        )
                        if defined GK (for /l %%J in (20,-1,5) do (set "#[%%J]=1")&set "GK=")
                        goto :RANDOM_SHAPE
                )
                if /i "!KEY:~-1!"=="W" (
                        ENDLOCAL
                        echo OW>key.ini
                        set/a "NI=(NI+12)%%24"
                        goto :READKEY
                )
        )
)

REM ~~~绘图引擎
if !F1! equ 1 (2>NUL echo         !SPACE!&set/p=<NUL) else (cls)
echo ┏%LINES%┓
for /l %%j in (0,1,5) do (set/a "MARK_Y=Y+%%j,#[!MARK_Y!]=1")
for /l %%j in (1,1,20) do (
        if not defined #[%%j] (
                echo;
        ) else (
                set "TP="
                for /l %%i in (1,1,10) do (set "TP=!TP!!P[%%i][%%j]!")
                set "TP=!TP:1=%E1%!"
                set "TP=!TP:0=%E0%!"
                echo ┃!TP!┃!READM[%%j]!
        )
)
echo ┗%LINES%┛
echo  CopyRight@2016~2018 BY HAPPY
ENDLOCAL&for /l %%j in (1,1,20) do (set "#[%%j]=")
set/a "X+=Dx,Y+=Dy"
goto :READKEY[/code]一一一
一一一
一一一
一一一
一一一一一一一一一一一一一一一以下是过去的旧版本一一一一一一一一一一一一一一一一
[2016/10/3] Version 1.0初版[code]@echo off
::**************Happy's俄罗斯方块***********
REM 使用说明:
REM A左D右;W旋转;S加速下落;
REM Q退出;P暂停;方向键继续;

::**************Settings高级设置************
REM 设置窗体
  title &setlocal enabledelayedexpansion
  mode con cols=35 lines=25&color F0
REM 开启防闪烁,用于画质增强
  set F1=1
REM 设置时钟T, 越小下落越快
  set T=130
REM 默认皮肤
  set "SKIN= ■"
REM 设置旋转体系:依次为TGM、SRS
::set "SHAPE=0x0F000x22220x0F000x22220x08E00x64400x0E200x44C00x02E00x44600x0E800xC4400x66000x66000x66000x66000x06C00x8C400x06C00x8C400x4E000x46400x0E400x4C400x0C600x4C800x0C600x4C80"
  set "SHAPE=0x0F000x22220x00F00x44440x8E000x64400x0E200x44C00x2E000x44600x0E800xC4400x66000x66000x66000x66000x6C000x46200x06C00x8C400x4E000x46400x0E400x4C400xC6000x26400x0C600x4C80"

::**************方向控制台******************
if "%1"=="CONTROLP" (
        title &MODE CON cols=15 lines=1
        for /l %%i in (1,1,100000) do (
                set "key="
                for /f "delims=" %%a in ('xcopy /W . 2^>NUL') do (
                        if not defined key (
                                set "key=%%a"&set "key=!key:~-1!"
                                echo %%i!key!>key.ini&if /i "!key!"=="Q" (exit)
                        )
                )
        )
)
start "" "%~f0" CONTROLP

::**************先导程序********************
REM 准备元素
set/a "LEVEL=1,SCORE=0, RU=!random!%%7,RI=(!random!%%4)*6"
for /l %%N in (0,24,144) do (set/a "N=%%N/24"&set "SHAPE!N!=!SHAPE:~%%N,24!")
for /l %%N in (0,1,1   ) do (set "P%%N=!SKIN:~%%N,1!")
for /l %%N in (1,1,10  ) do (set "LINES=!LINES!━"   )
for /l %%N in (1,1,300 ) do (set "SPACE=!SPACE!"    )

REM 构建显存
:DISPLAY_RAM
for /l %%j in (0,1,21) do (
        set "#[%%j]=1"
        for /l %%i in (0,1,11) do (
                set/a "BOUNDARY=(%%i)*(%%i-11)*(%%j-21)"
                if !BOUNDARY! equ 0 (set "POINT[%%i][%%j]=1") else (set "POINT[%%i][%%j]=0")
        )
)

::**************主体程序********************
REM ~~~随机块体
:RANDOM_SHAPE
set/a "NU=RU,NI=RI, RU=!random!%%7,RI=(!random!%%4)*6, X=4,Y=1"
echo RW>key.ini

REM ~~~计数面板
set "READM[3]=LEVEL:!LEVEL!"
set "READM[5]=SCORE:!SCORE!"
set "READM[7]=NEXT :"

REM ~~~读取按键
:READKEY
set/a "dx=0,dy=0"&set/p key=<key.ini
if /i "!key:~-1!"=="P" (goto :READKEY)
if not "!PRE_KEY!"=="!key!" (
        set PRE_KEY=!key!
        if /i "!key:~-1!"=="A" (set "dx=-1")
        if /i "!key:~-1!"=="D" (set "dx=1" )
        if /i "!key:~-1!"=="W" (
                set "Cache=!SHAPE%NU%:~%NI%,6!"
                set/a "Xf=X,NI+=6,NI%%=24"
                if "!key!"=="RW" (set "Cache2=!SHAPE%RU%:~%RI%,6!")
                REM ~~~16进制旋转
                for /l %%j in (3,-1,0) do (
                        set/a "DIV[3][%%j]=(Cache&0x1), DIV[2][%%j]=(Cache&0x2)>>0x1, DIV[1][%%j]=(Cache&0x4)>>0x2, DIV[0][%%j]=(Cache&0x8)>>0x3, Cache=Cache>>0x4"
                        if "!key!"=="RW" (
                                set/a "RDIV[3][%%j]=(Cache2&0x1), RDIV[2][%%j]=(Cache2&0x2)>>0x1, RDIV[1][%%j]=(Cache2&0x4)>>0x2, RDIV[0][%%j]=(Cache2&0x8)>>0x3, Cache2=Cache2>>0x4, RDI=%%j+8"
                                set "RDISPLAY[%%j]=!RDIV[0][%%j]!!RDIV[1][%%j]!!RDIV[2][%%j]!!RDIV[3][%%j]!"
                                set "RDISPLAY[%%j]=!RDISPLAY[%%j]:1=%P1%!"&set "READM[!RDI!]=!RDISPLAY[%%j]:0=%P0%!"
                        )
                )
                if "!key!"=="RW" (echo WO>key.ini)
                goto :DATA_PROCESSING
        )
        if /i "!key:~-1!"=="Q" (exit)
)
if /i "!key:~-1!"=="S" (set "dy=1"&goto :DATA_PROCESSING)

REM ~~~下落体系
if !Mark! equ 0 (
        set "Mark=1"
        set "T1=!time:~9,2!"
) else (
        set/a "TS=2!time:~9,2!-1!T1!"
        set/a "TS=1!TS:~-2!"
        if !TS! lss !T! (set "dy=0") else (set/a "dy=1,Mark=0")
)
if !dx! equ 0 if !dy! equ 0 (goto :READKEY)

REM ~~~数据处理
:DATA_PROCESSING
set/a "CYC=Y+4"
SETLOCAL
for /l %%j in (!Y!,1,!CYC!) do (
        set "#[%%j]=1"
        set "DISPLAY[%%j]="
        for /l %%i in (0,1,11) do (
                set/a "XV=%%i-X-dx,YV=%%j-Y-dy"
                if defined  DIV[!XV!][!YV!] (
                        set/a "CHE1=DIV[!XV!][!YV!]&POINT[%%i][%%j],CHE2=DIV[!XV!][!YV!]|POINT[%%i][%%j]"
                        if !CHE1! equ 0 (
                                set "POINT[%%i][%%j]=!CHE2!"
                        ) else (
                                if !dx! neq 0 (
                                        ENDLOCAL
                                        goto :READKEY
                                )
                                if !dy! equ 1 (
                                        ENDLOCAL
                                        if !Y! lss 4 (goto GAME_OVER)
                                        REM ~~~固化块体
                                        for /l %%J in (!CYC!,-1,!Y!) do (
                                                set "DISPLAY[%%J]="
                                                for /l %%I in (1,1,10) do (
                                                        set/a "XV=%%I-X,YV=%%J-Y"
                                                        if defined  DIV[!XV!][!YV!] (
                                                                set/a "POINT[%%I][%%J]=DIV[!XV!][!YV!]|POINT[%%I][%%J]"
                                                        )
                                                        set "DISPLAY[%%J]=!DISPLAY[%%J]!!POINT[%%I][%%J]!"
                                                )
                                                REM ~~~关卡得分
                                                if %%J leq 20 if "!DISPLAY[%%J]!"=="1111111111" (
                                                        set/a "SCORE+=10"&set "#%%J=1"
                                                        if !SCORE! equ 400 (
                                                                for /l %%n in (!CYC!,-1,!Y!) do (set "#%%n=")
                                                                set/a "SCORE=0,LEVEL+=1,T-=10"
                                                                goto :DISPLAY_RAM
                                                        )
                                                )
                                        )
                                        REM ~~~极品消行
                                        for /l %%J in (20,-1,5) do (
                                                if defined #%%J (
                                                        set "#%%J="
                                                        set/a "PJ=%%J-1"
                                                        for /l %%n in (1,1,3) do (
                                                                if defined #!PJ! (set/a "PJ-=1")
                                                        )
                                                        set "#!PJ!=1"
                                                        for /l %%I in (1,1,10) do (
                                                                set/a "POINT[%%I][%%J]=POINT[%%I][!PJ!]"
                                                        )
                                                )
                                                set "#[%%J]=1"
                                        )
                                        goto :RANDOM_SHAPE
                                )
                                if /i "!key:~-1!"=="W" (
                                        ENDLOCAL
                                        echo OW>key.ini
                                        set/a "NI=(NI+12)%%24"
                                        goto :READKEY
                                )
                        )
                )
        )
)

REM ~~~绘图引擎
if !F1! equ 1 (2>NUL echo         !SPACE!&set/p=<NUL) else (cls)
echo ┏%LINES%┓
for /l %%j in (1,1,20) do (
        if defined #[%%j] (
                set "#[%%j]="
                set "DISPLAY[%%j]="
                for /l %%i in (1,1,10) do (set "DISPLAY[%%j]=!DISPLAY[%%j]!!POINT[%%i][%%j]:1=%P1%!")
                echo ┃!DISPLAY[%%j]:0=%P0%!┃!READM[%%j]!
        ) else (echo;)
)
echo ┗%LINES%┛
echo  CopyRight@2016~2018 BY HAPPY&ENDLOCAL&set/a "X+=dx,Y+=dy"
goto :READKEY

REM ~~~游戏结束
:GAME_OVER
echo GAME OVER!&ping -n 2 127.1>NUL&goto :DISPLAY_RAM[/code]

aa77dd@163.com 发表于 2016-10-3 12:10

楼主再有时间时, 可以考虑下, 消层时, 被消层替换成别的字符比如阴影方块闪动短暂瞬间, 被消层上面的方块逐层下落过渡一下

另外 %windir%\media\ 目录中有很多 Windows 自带的音效文件 WAV/MID ,  可以用 wmplayer 播放合适的作为游戏音效

happy886rr 发表于 2016-10-3 12:19

[i=s] 本帖最后由 happy886rr 于 2016-10-3 16:53 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191300&ptid=41917]2#[/url] [i]aa77dd@163.com[/i] [/b]
感谢建议。用批处理实现俄罗斯方非常繁琐,毕竟效率不是很高,连choice也被xcopy替换了,要是借助点第三方,体验可以有很大改善。不过这个雏形的好处就是,好多都能自定义,什么形状,随意自定义,不过得用16进制表示。

这只是初版,意在尝试用批处理模拟一个div在另一个图层上的移动。移动一个层,因此效率不是很快,代码也过于繁杂。其实对于俄罗斯方块,就那5种形状,且每种形状均由4个黑格组成,因此,我们只需记住这四个点的移动,就可以省掉40多次循环,再采用矩阵的旋转处理算法。俄罗斯方块2.0版将提供这种精简处理方案,预计游戏速度可以提高近15倍。

happy886rr 发表于 2016-10-4 21:44

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191333&ptid=41926]3#[/url] [i]plp626[/i] [/b]
2.0版本更加迅捷,至于A按钮迟钝,那是因为没有使用第三方,用xcopy当按键有很多弊端,批处理的横向移动,要不断set/p读取按键,故比不上直接上第三方的手感。

523066680 发表于 2016-10-5 16:57

[i=s] 本帖最后由 523066680 于 2016-10-5 17:03 编辑 [/i]

最讨厌这种形状了
[font=宋体]
  ■■
    ■■
[/font]

对了有时候 NEXT 下方显示的方块形状好像不对
[font=宋体]┏━━━━━━━━━━┓
┃          ┃
┃          ┃
┃          ┃LEVEL:1
┃          ┃
┃          ┃SCORE:10
┃       ■  ┃
┃      ■■  ┃NEXT
┃       ■  ┃ ■■ 
┃          ┃ ■■ 
┃          ┃ ■  
┃          ┃    
┃          ┃
┃          ┃
┃          ┃
┃          ┃
┃          ┃
┃          ┃
┃   ■■  ■  ┃
┃  ■■■■■■  ┃
┃   ■■■■■  ┃
┗━━━━━━━━━━┛
CopyRight@2016~2018 BY HAPPY

[/font]

Bella 发表于 2016-10-5 17:07

论坛里的几个游戏, 我按键盘都没反应

aa77dd@163.com 发表于 2016-10-5 17:51

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=191356&ptid=41917]6#[/url] [i]Bella[/i] [/b]

一些老帖 可能不能在 Win7 以上运行, 原作者没更新, 也没人发兼容版, 较新的帖, 可能在 Win7 测试过, 但 Win8 以上大概都没测试过了

happy886rr 发表于 2016-10-5 20:18

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191356&ptid=41917]6#[/url] [i]Bella[/i] [/b]
那些游戏都是两个窗口,你得把鼠标焦点聚集到小窗口上,按键才有反应。还有论坛的其他游戏貌似是2009年那会的,他们的换行符什么的复制下来都丢了,其实那些游戏都能运行,你把多余的空格和换行符补全基本都能运行。

happy886rr 发表于 2016-10-5 20:23

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191354&ptid=41917]5#[/url] [i]523066680[/i] [/b]
主要是考虑不闪屏幕,所以全部用的动态显示,也就是不cls,只更新变化的那个点,因此就会出现老点残留的情况。你的块走到哪,才更新周围的字符,优点是显示速度极快,缺点是残留老点。1.0版应该还好,一会公布C语言版,还在测试中。

aa77dd@163.com 发表于 2016-10-5 20:25

[i=s] 本帖最后由 aa77dd@163.com 于 2016-10-5 20:42 编辑 [/i]

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=191360&ptid=41917]8#[/url] [i]happy886rr[/i] [/b]

我每次打开, 那控制窗口都遮着主窗口, 我会用键盘移动窗口(Alt + 空格, M, 方向键... 回车),  但有人不会这个的,  

控制窗口弄大点呢, 那么小, 标题栏都没地方可以用鼠标点着拖动, 弄大点, 在里面显示着这是控制窗口, 需要焦点...

老地方没有用空格覆盖, 就会残留

happy886rr 发表于 2016-10-5 20:47

[i=s] 本帖最后由 happy886rr 于 2018-11-11 13:40 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191362&ptid=41917]10#[/url] [i]aa77dd@163.com[/i] [/b]
呵呵,就是要小,要遮住,这样人们才会很费劲的去移动那个小家伙,焦点就被聚焦在小窗口上了。另外五子棋和象棋的游戏还在测试中,棋类游戏我借助了第三方,用鼠标点击去落子,还得完善下bug。

523066680 发表于 2016-10-5 21:33

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=191364&ptid=41917]11#[/url] [i]happy886rr[/i] [/b]


    精力爆表!(C语言版出来的时候去我那里发个副本吧~)

happy886rr 发表于 2016-10-5 21:45

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191366&ptid=41917]12#[/url] [i]523066680[/i] [/b]
好的,修bug花去很多时间。好在C语言有断点调试。

CrLf 发表于 2016-10-5 23:36

[i=s] 本帖最后由 CrLf 于 2016-10-5 23:37 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191368&ptid=41917]13#[/url] [i]happy886rr[/i] [/b]


    楼主最近的[s]骗到的[/s]赚来的技术分快够换书了

happy886rr 发表于 2016-10-6 04:13

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191371&ptid=41917]14#[/url] [i]CrLf[/i] [/b]
哈哈,大师都养了800多鸡,我才96鸡,我只是鸡肋呀。

523066680 发表于 2016-10-6 17:31

[i=s] 本帖最后由 523066680 于 2016-10-6 20:24 编辑 [/i]

呜,C代码还是用自带的code标签好了,对了,需要输入啥参数?
推荐 sublime text/其他编辑器 以及 左花括号换行(强迫症路过)

因为源代码是要求gbk格式保存,建议发附件

建议补充:
1. 建议执行前清理一下屏幕,执行后清理一下屏幕,执行前后是这样的:
[font=宋体]┃          ┃
┃          ┃
C:\Users   \Desktop>a 20 200 SRS
┏━━━   ━━━━┓
┃          ┃SCORE:30
┃          ┃
┃          ┃LEVEL:1
┃    ■     ┃  ■
C:\Users\UserN\Desktop> ■■  0
┃          ┃ ■■[/font]

2. 应该设置参数缺省(默认)值,使得双击也能运行

happy886rr 发表于 2016-10-6 20:31

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191354&ptid=41917]5#[/url] [i]523066680[/i] [/b]
在批处理版Version2.0中添加[code]
REM ~~~开启此项可以解决NEXT显示异常,但加速下落速度会减慢
::for /l %%j in (8,1,11) do (set/a "#[%%j]=1")
[/code]动态显示是按行来的,标记哪行显示哪行。只需标记NEXT那几行,就可以每次都更新,下一个图标就不会再异常了,或者直接复制version2.1新修版。

happy886rr 发表于 2016-10-6 20:44

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=191387&ptid=41917]16#[/url] [i]523066680[/i] [/b]
直接将C中main函数换为如下,即点即玩。[code]/**********Main主函数***********/
int main()
{
                system("color F0&mode con cols=35 lines=25");
        HideCursor();
        CreatUI();
        GameCycle(10,800,1);
        return 0;
}[/code]Tetris.c的无参数直接启动文件地址

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.