俄罗斯方块

来源:互联网 发布:淘宝网店代理是什么 编辑:程序博客网 时间:2024/04/29 01:57

TC下运行,


#include<stdio.h>#include<stdlib.h>#include<graphics.h>#include<dos.h>#define K 20#define W 10#define H 22#define left 0x4b00#define right 0x4d00#define up 0x4800#define down 0x5000#define esc 0x011b#define R 0x1372   #define Y 0x1579#define N 0x316eint ax[4];int ay[4];int score;int s=6;/* 控制速度 值越大越慢 最小值 为1*/struct box{int x;int y;int kind;int shape;}box;typedef struct s_node{int x;int y;struct s_node *next;}s_list;typedef s_list *link;link stack=NULL;link bottom=NULL;/* @0 俄(48x48,H)@ [suki software]*/unsigned char e54H[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,  0x1E,0xFF,0x80,0x00,0x00,0x00,0x00,  0x1F,0xFF,0xC0,0x00,0x00,0x00,0x00,  0x3C,0xEF,0xE0,0x00,0x00,0x00,0x00,  0x3C,0xEE,0x00,0x00,0x00,0x00,0x00,  0x7F,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x7F,0xFF,0xE0,0x00,0x00,0x00,0x00,  0xFC,0xEE,0x00,0x00,0x00,0x00,0x00,  0x1C,0xEF,0xC0,0x00,0x00,0x00,0x00,  0x1C,0xFF,0xC0,0x00,0x00,0x00,0x00,  0x1F,0xEF,0x80,0x00,0x00,0x00,0x00,  0x1F,0xE7,0x80,0x00,0x00,0x00,0x00,  0x1C,0xEF,0x00,0x00,0x00,0x00,0x00,  0x1C,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x1C,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x1F,0xE1,0xE0,0x00,0x00,0x00,0x00,  0x1C,0x00,0xC0,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* @1 罗(48x48,H)@ [suki software]*/unsigned char luo54H[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x3F,0xFF,0xC0,0x00,0x00,0x00,0x00,  0x3B,0xBB,0xC0,0x00,0x00,0x00,0x00,  0x3B,0xBB,0xC0,0x00,0x00,0x00,0x00,  0x3B,0xBB,0xC0,0x00,0x00,0x00,0x00,  0x3F,0xFF,0xC0,0x00,0x00,0x00,0x00,  0x03,0x80,0x00,0x00,0x00,0x00,0x00,  0x03,0xC0,0x00,0x00,0x00,0x00,0x00,  0x07,0xFF,0x00,0x00,0x00,0x00,0x00,  0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,  0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,  0x3D,0xFE,0x00,0x00,0x00,0x00,0x00,  0x00,0xFC,0x00,0x00,0x00,0x00,0x00,  0x00,0x78,0x00,0x00,0x00,0x00,0x00,  0x01,0xF0,0x00,0x00,0x00,0x00,0x00,  0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,  0x3E,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* @2 斯(48x48,H)@ [suki software]*/unsigned char shi54H[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x3F,0xC3,0xC0,0x00,0x00,0x00,0x00,  0x39,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,  0x39,0xF8,0x00,0x00,0x00,0x00,0x00,  0x39,0xF8,0x00,0x00,0x00,0x00,0x00,  0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,  0x39,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x39,0xFB,0x80,0x00,0x00,0x00,0x00,  0x3F,0xFB,0x80,0x00,0x00,0x00,0x00,  0x39,0xFB,0x80,0x00,0x00,0x00,0x00,  0xFF,0xFB,0x80,0x00,0x00,0x00,0x00,  0xFF,0xFB,0x80,0x00,0x00,0x00,0x00,  0x1F,0xBB,0x80,0x00,0x00,0x00,0x00,  0x3F,0xFB,0x80,0x00,0x00,0x00,0x00,  0x79,0xF3,0x80,0x00,0x00,0x00,0x00,  0x70,0xF3,0x80,0x00,0x00,0x00,0x00,  0x00,0xE0,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* @3 方(48x48,H)@ [suki software]*/unsigned char fang54H[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0xE0,0x00,0x00,0x00,0x00,0x00,  0x00,0xF0,0x00,0x00,0x00,0x00,0x00,  0x00,0xF0,0x00,0x00,0x00,0x00,0x00,  0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x03,0xC0,0x00,0x00,0x00,0x00,0x00,  0x03,0xC0,0x00,0x00,0x00,0x00,0x00,  0x03,0xC0,0x00,0x00,0x00,0x00,0x00,  0x03,0xFF,0x00,0x00,0x00,0x00,0x00,  0x03,0x87,0x00,0x00,0x00,0x00,0x00,  0x03,0x87,0x00,0x00,0x00,0x00,0x00,  0x07,0x87,0x00,0x00,0x00,0x00,0x00,  0x07,0x8F,0x00,0x00,0x00,0x00,0x00,  0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,  0x1E,0x0F,0x00,0x00,0x00,0x00,0x00,  0x3E,0x0F,0x00,0x00,0x00,0x00,0x00,  0x7C,0x7E,0x00,0x00,0x00,0x00,0x00,  0x30,0x38,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* @4 块(48x48,H)@ [suki software]*/unsigned char kuai54H[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x1C,0x38,0x00,0x00,0x00,0x00,0x00,  0x1C,0x38,0x00,0x00,0x00,0x00,0x00,  0x1C,0x38,0x00,0x00,0x00,0x00,0x00,  0x1D,0xFF,0x80,0x00,0x00,0x00,0x00,  0x1C,0x3B,0x80,0x00,0x00,0x00,0x00,  0xFF,0x3B,0x80,0x00,0x00,0x00,0x00,  0x1C,0x3B,0x80,0x00,0x00,0x00,0x00,  0x1C,0x3B,0x80,0x00,0x00,0x00,0x00,  0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,  0x1F,0x38,0x00,0x00,0x00,0x00,0x00,  0x1C,0x7C,0x00,0x00,0x00,0x00,0x00,  0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,  0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,  0x79,0xEF,0x00,0x00,0x00,0x00,0x00,  0x03,0xC7,0xC0,0x00,0x00,0x00,0x00,  0x0F,0x81,0xE0,0x00,0x00,0x00,0x00,  0x0F,0x00,0xC0,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00};char zuo16H[]={  0x18,0xC0,0x18,0xC0,0x19,0x80,0x31,0xFE,  0x33,0xFE,0x76,0xC0,0xF0,0xFC,0xB0,0xFC,  0x30,0xC0,0x30,0xC0,0x30,0xFE,0x30,0xFE,  0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,};char zhe16H[]={  0x03,0x00,0x03,0x0C,0x1F,0xCC,0x1F,0xD8,  0x03,0x30,0xFF,0xFE,0xFF,0xFE,0x03,0x00,  0x0F,0xF8,0x3F,0xF8,0xEC,0x18,0xCF,0xF8,  0x0C,0x18,0x0F,0xF8,0x0F,0xF8,0x00,0x00,};char mh16H[]={0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  0x30,0x00,  0x30,0x00,  0x00,0x00,  0x00,0x00,  0x30,0x00,  0x30,0x00,  0x00,0x00,  0x00,0x00};char zhao16H[]={0x0C,0x00,  0x0C,0x0C,  0x7F,0x8C,  0x7F,0xCC,  0x0C,0x6C,  0x0C,0x38,  0xFF,0x98,  0xFF,0xB8,  0x0C,0x38,  0x6F,0x6C,  0x6F,0xCC,  0x7C,0x84,  0x7C,0x00,  0xCF,0xFE,  0x87,0xFE,  0x00,0x00};char peng16H[]={0x00,0x30,  0x77,0x7C,  0x77,0x7C,  0x55,0x64,  0x55,0x7C,  0x77,0x64,  0x55,0x6C,  0x55,0x60,  0x77,0x7E,  0x77,0x7E,  0x55,0x06,  0x55,0x76,  0x55,0x06,  0xD5,0x1E,  0xAB,0x0C,  0x00,0x00};link push(link s,int x,int y){link newnode;newnode=(link)malloc(sizeof(s_list));newnode->x=x;newnode->y=y;newnode->next=s;s=newnode;return s;}link pop(link p,int y){link q=p,r,t;if(p==NULL){return q;}if(p->y!=y){for(t=p;t!=NULL;t=t->next){if(t->next->y==y){r=t->next;t->next=pop(r->next,y);free(r);return q;}}return q;}elseif(p->y==y){for(;q->y==y;){r=q->next;free(q);q=r;}q->next=pop(q->next,y);return q;}}void initial(void){int gdriver=DETECT,gmode=0,i;link p;score=0;registerbgidriver(0);initgraph(&gdriver,&gmode,"");if(stack!=NULL){for(;stack!=NULL;stack=stack->next){p=stack->next;free(stack);stack=p;}}for(i=1;i<=10;i++)bottom=push(bottom,i*K,23*K);}void draw_mat(char *mat,int matsize,int x,int y,int color)/*汉字点阵*/{     int i,j,k,m;     m=(matsize-1)/8+1;     for(j=0;j<matsize;j++)          for(i=0;i<m;i++)               for(k=0;k<8;k++)                    if(mat[j*m+i]&(0x80>>k))                         putpixel(x+i*8+k,y+j,color);}void showword(void){       draw_mat(e54H,54,251,55,0);     draw_mat(luo54H,54,304,55,0);     draw_mat(shi54H,54,357,55,0);     draw_mat(fang54H,54,410,55,0); draw_mat(kuai54H,54,463,55,0);  draw_mat(e54H,54,250,55,4);     draw_mat(luo54H,54,303,55,4);     draw_mat(shi54H,54,356,55,4);     draw_mat(fang54H,54,409,55,4); draw_mat(kuai54H,54,462,55,4);     draw_mat(zuo16H,16,530,430,15);     draw_mat(zhe16H,16,548,430,15);     draw_mat(mh16H,16,566,430,15);      draw_mat(zhao16H,16,578,430,15);     draw_mat(peng16H,16,600,430,15);}void clew(void){char buf[10];setcolor(9);settextstyle(0,0,2);settextjustify(1,1);outtextxy(350,150,"UP");outtextxy(290,200,"LEFT");outtextxy(420,200,"RIGHT");outtextxy(350,250,"DOWN");outtextxy(280,280,"ESC");outtextxy(430,280,"RESTA");setcolor(11);settextstyle(1,0,4);outtextxy(300,380,"SCORE:");sprintf(buf,"%d",score);setcolor(12);settextstyle(1,0,4);outtextxy(400,380,buf);setcolor(15);settextstyle(1,0,1);outtextxy(572,460,"QQ:906575579");}void draw_frame(void){setcolor(1);rectangle(0,0,502,470);setcolor(2);rectangle(2,2,500,468);setfillstyle(SOLID_FILL,2);bar(5,5,215,465);setfillstyle(SOLID_FILL,7);bar(10,10,210,460);setfillstyle(SOLID_FILL,8);bar(10,450,210,460);setfillstyle(SOLID_FILL,9);bar(220,5,499,465);setfillstyle(SOLID_FILL,8);bar(225,10,494,460);setfillstyle(SOLID_FILL,9);bar(225,120,494,125);setfillstyle(SOLID_FILL,9);bar(225,300,494,305);}void b_redraw(void){link p;setfillstyle(SOLID_FILL,2);bar(5,5,215,465);setfillstyle(SOLID_FILL,7);bar(10,10,210,460);setfillstyle(SOLID_FILL,8);bar(10,450,210,460);for(p=stack;p!=NULL;p=p->next){setcolor(15);rectangle(p->x-K/2,p->y-K/2,p->x+K/2,p->y+K/2);setfillstyle(1,8);bar(p->x-K/2+1,p->y-K/2+1,p->x+K/2-1,p->y+K/2-1);}}int b_position(int x,int y){int i;ax[0]=x;ay[0]=y;switch(box.kind){case 1:/* 田字形 */ax[1]=x+K;ay[1]=y;ax[2]=x;ay[2]=y-K;ax[3]=x+K;ay[3]=y-K;break;case 2:/* 直线形 */if(box.shape==0)/* 竖形 */{ax[1]=x;ay[1]=y-K;ax[2]=x;ay[2]=y-2*K;ax[3]=x;ay[3]=y-3*K;}if(box.shape==1)/* 横形 */{ax[1]=x-K;ay[1]=y;ax[2]=x+K;ay[2]=y;ax[3]=x+2*K;ay[3]=y;}break;case 3:/* 右梯形 */if(box.shape==0)/* 右下高阶梯形 */{ax[1]=x;ay[1]=y-K;ax[2]=x-K;ay[2]=y-K;ax[3]=x-K;ay[3]=y-2*K;}if(box.shape==1)/* 右上低阶梯形 */{ax[1]=x-K;ay[1]=y;ax[2]=x;ay[2]=y-K;ax[3]=x+K;ay[3]=y-K;}break;case 4:/* 左阶梯形 */if(box.shape==0)/* 左下高阶梯形 */{ax[1]=x;ay[1]=y-K;ax[2]=x+K;ay[2]=y-K;ax[3]=x+K;ay[3]=y-2*K;}if(box.shape==1)/* 左上低阶梯形 */{ax[1]=x+K;ay[1]=y;ax[2]=x;ay[2]=y-K;ax[3]=x-K;ay[3]=y-K;}break;case 5:/* 右L形 */if(box.shape==0)/* 右L形 */{ax[1]=x+K;ay[1]=y;ax[2]=x;ay[2]=y-K;ax[3]=x;ay[3]=y-2*K;}if(box.shape==1)/* 右倒1 右L形 */{ax[1]=x;ay[1]=y-K;ax[2]=x+K;ay[2]=y-K;ax[3]=x+2*K;ay[3]=y-K;}if(box.shape==2)/* 右倒2 右L形 */{ax[1]=x;ay[1]=y-K;ax[2]=x;ay[2]=y-2*K;ax[3]=x-K;ay[3]=y-2*K;}if(box.shape==3)/* 右倒3 右L形 */{ax[1]=x-K;ay[1]=y;ax[2]=x+K;ay[2]=y;ax[3]=x+K;ay[3]=y-K;}break;case 6:/* 左L形 */if(box.shape==0)/* 左L形 */{ax[1]=x-K;ay[1]=y;ax[2]=x;ay[2]=y-K;ax[3]=x;ay[3]=y-2*K;}if(box.shape==1)/* 右倒1 左L形 */{ax[1]=x;ay[1]=y-K;ax[2]=x+K;ay[2]=y;ax[3]=x+2*K;ay[3]=y;}if(box.shape==2)/* 右倒2 左L形 */{ax[1]=x;ay[1]=y-K;ax[2]=x;ay[2]=y-2*K;ax[3]=x+K;ay[3]=y-2*K;}if(box.shape==3)/* 右倒3 左L形 */{ax[1]=x;ay[1]=y-K;ax[2]=x-K;ay[2]=y-K;ax[3]=x-2*K;ay[3]=y-K;}break;case 7:/* 丁字形 */if(box.shape==0)/* 丁字形 */{ax[1]=x;ay[1]=y-K;ax[2]=x-K;ay[2]=y-K;ax[3]=x+K;ay[3]=y-K;}if(box.shape==1)/* 右倒1 丁字形 */{ax[1]=x;ay[1]=y-K;ax[2]=x-K;ay[2]=y-K;ax[3]=x;ay[3]=y-2*K;}if(box.shape==2)/* 右倒2 丁字形 */{ax[1]=x-K;ay[1]=y;ax[2]=x+K;ay[2]=y;ax[3]=x;ay[3]=y-K;}if(box.shape==3)/* 右倒3 丁字形 */{ax[1]=x;ay[1]=y-K;ax[2]=x+K;ay[2]=y-K;ax[3]=x;ay[3]=y-2*K;}break;}}int b_bottom_(void){int i,j=0,k;link p;for(i=0;i<4;i++){for(p=bottom;p!=NULL;p=p->next){if(ax[i]==p->x&&ay[i]+K==p->y){j++;}}}for(i=0;i<4;i++){for(p=stack;p!=NULL;p=p->next){if(ax[i]==p->x&&ay[i]+K==p->y){j++;}}}if(j==0)return 0;else{for(i=0;i<4;i++)stack=push(stack,ax[i],ay[i]);return 1;}}int draw_box(int x[],int y[],int rectangle_color,int bar_color){int i;if(box.kind==2&&box.shape==0&&box.y==3*K)for(i=0;i<3;i++){setcolor(rectangle_color);rectangle(x[i]-K/2,y[i]-K/2,x[i]+K/2,y[i]+K/2);setfillstyle(1,bar_color);bar(x[i]-K/2+1,y[i]-K/2+1,x[i]+K/2-1,y[i]+K/2-1);}elsefor(i=0;i<4;i++){setcolor(rectangle_color);rectangle(x[i]-K/2,y[i]-K/2,x[i]+K/2,y[i]+K/2);setfillstyle(1,bar_color);bar(x[i]-K/2+1,y[i]-K/2+1,x[i]+K/2-1,y[i]+K/2-1);}}void score_(void){int i,j=0,k=0,r=0;char buf[10];link p,q;for(i=0;i<4;i++){j=0;if(k==1){for(r=0;r<4;r++){if(ay[r]<ay[i-1]){ay[r]+=K;}}k=0;}for(p=stack;p!=NULL;p=p->next){if(ay[i]==p->y){j++;}}if(j==W){k=1;score+=10;stack=pop(stack,ay[i]);for(q=stack;q!=NULL;q=q->next)if(q->y<ay[i])q->y+=K;sprintf(buf,"%d",score-10);setcolor(8);settextstyle(1,0,4);outtextxy(400,380,buf);sprintf(buf,"%d",score);setcolor(12);outtextxy(400,380,buf);}}}int game_over_(void){link p;for(p=stack;p!=NULL;p=p->next){if(p->y==2*K){return 1;}}return 0;}void exit_(int x){   int key;   while(1)   {  key=bioskey(0);  if(key==Y||key==N)break;   }   if(x==key)   exit(1);}int b_rand(void){int i;randomize();box.x=5*K;box.y=3*K;box.kind=random(7)+1;randomize();if(box.kind==1)box.shape=0;elseif(box.kind==2||box.kind==3||box.kind==4)box.shape=random(2);elsebox.shape=random(4);return 0;}void game_play(void){int key;int i=0,j=0,k=0,j1=0,j2=0,j3=0,j4=0;link p;b_rand();b_position(box.x,box.y);while(1){while(!kbhit()){if(j1==1){j1=b_rand();b_position(box.x,box.y);j3=game_over_();if(j3==1)break;}j1=b_bottom_();if(j1==1){score_();if(score>=500)break;b_redraw();for(i=0;i<s;i++)delay(10000);continue;}if(box.y>22*K)continue;draw_box(ax,ay,15,8);for(i=0;i<s;i++)delay(10000);draw_box(ax,ay,7,7);box.y+=K;b_position(box.x,box.y);}if(j3==1){setcolor(4);settextstyle(1,0,2);settextjustify(1,1);outtextxy(5*K+8,9*K,"GAME OVER!");setcolor(15);settextstyle(1,0,2);outtextxy(5*K+12,11*K,"CONTINUE ?(Y/N)");exit_(N);break;}key=bioskey(0);switch(key){case right:b_position(box.x,box.y);for(i=1,k=ax[0];i<4;i++){if(ax[i]>k)k=ax[i];}if(k==W*K)break;j=0;for(i=0;i<4;i++){for(p=stack;p!=NULL;p=p->next){if(ax[i]+K==p->x&&ay[i]==p->y){j=1;break;}}if(j==1)break;}if(j==1)break;box.x+=K;b_position(box.x,box.y);break;case left:k=0;b_position(box.x,box.y);for(i=1,k=ax[0];i<4;i++){if(ax[i]<k)k=ax[i];}if(k==K)break;j=0;for(i=0;i<4;i++){for(p=stack;p!=NULL;p=p->next){if(ax[i]-K==p->x&&ay[i]==p->y){j=1;break;}}if(j==1)break;}if(j==1)break;box.x-=K;b_position(box.x,box.y);break;case up:i=box.shape;k=0;if(box.kind==1)box.shape=0;elseif(box.kind==2||box.kind==3||box.kind==4)box.shape=(box.shape+1)%2;elsebox.shape=(box.shape+1)%4;b_position(box.x,box.y);for(j=0;j<4;j++){if(ax[j]<K||ax[j]>W*K||ay[j]>H*K||ay[j]==K){k=1;break;}for(p=stack;p!=NULL;p=p->next){if(ax[j]==p->x&&ay[j]==p->y){k=1;break;}}}if(k==1){box.shape=i;b_position(box.x,box.y);break;}break;case down:k=0;b_position(box.x,box.y);while(1){for(i=0;i<4;i++){for(p=stack;p!=NULL;p=p->next){if((ay[i]+2*K)==p->y&&ax[i]==p->x){k++;}}}if(k==0&&(box.y+K)<22*K){box.y+=K;b_position(box.x,box.y);draw_box(ax,ay,15,8);delay(5000);draw_box(ax,ay,7,7);k=0;}elsebreak;}break;case R:setcolor(4);settextstyle(1,0,2);settextjustify(1,1);outtextxy(5*K+12,10*K,"RESTART ?(Y/N)");while(1){  key=bioskey(0);  if(key==Y||key==N)break;}if(key==Y){j4=1;break;}j4=0;b_redraw();break;case esc:j2=1;break;}if(j2==1){char buf[10];setcolor(4);settextstyle(1,0,2);settextjustify(1,1);outtextxy(5*K+12,10*K,"QUIT ?(Y/N)");exit_(Y);b_redraw();sprintf(buf,"%d",score);setcolor(12);settextstyle(1,0,4);outtextxy(400,380,buf);setcolor(8);outtextxy(400,380,buf);j2=0;}if(j4==1)break;if(score>=300){s--;break;}}}void main(){while(1){initial();draw_frame();showword();clew();game_play();cleardevice();}closegraph();}


原创粉丝点击