//********** 俄罗斯方块参考代码 ************//
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define STTY_UP "stty raw -echo -F"
#define STTY_DOWN "stty -raw echo -F"
#define PATH " /dev/tty"
#define HEIGHT 21
#define WIDTH 12
#define FULL_NUMBER (WIDTH-2)
//***定义类型及变量 ***//
struct pos
{
int x;
int y;
};
struct pos point[4];
int block[HEIGHT][WIDTH] = {0};
int current_point;
int current_status;
int score = 0;
int level = 0;
/******* 声明函数 *******/
void init_block();
void display();
void gotoxy(int ,int );
void new_point();
void draw_point();
void point_move_down();
void point_move_right();
void point_move_left();
void point_spin();
int get_char();
int is_game_over();
/******* 游戏主逻辑 *******/
int main()
{
system( STTY_UP PATH );
srand(time(0));
char key;
int i;
init_block();
display();
new_point();
draw_point();
while(1)
{
for(i=0; i<15-level; i++)
{
key = get_char();
if( key == 's' )
break;
switch( key )
{
case 'a': point_move_left(); break;
case 'd': point_move_right(); break;
case 'w': point_spin(); break;
case 3:
case 27: system(STTY_DOWN PATH); exit(0);
case ' ': getchar(); break;
default: break;
}
usleep(40000);
}
point_move_down();
display()