1、 0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, 1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0, 1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0, 1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0, 0,0,0,0
2、,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0, 1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, 1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0, 0,0,0,0,1,1,0,0
3、,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, ; /*方块模板*/ int shape,dir,next_shape,next_dir;struct position int x; int y; now_position; /*纪录现在方块的位置*/ int speed_level=1;int fall_to_land,be_lined; /*判断方块是否着地的*/ /*-*/ void clscreen();void setxy(int x,int y);v
4、oid display_back();void display_interface();void display_fk(int x,int y,int shape,int dir);void init();/int getkey();/*取键盘的扫描码*/ void getinput();void m_sound(int freq,int time);void eras_fk(int x,int y,int shape,int dir);/*擦除方块*/ void fk_down(bool quickly = false);bool is_illegal(int x,int y,int cha
5、nged_dir);/*判断方块移动后坐标是否非法,非法1,合法0*/ int get_random(int n); /*生成一个0-n-1的随机数*/ void check_line(); /*检查是否有行可以消去,如果有就消去*/ void game_over();/*-*/ int main() int i; init(); while (true) display_back(); now_position.x=10; now_position.y=2;/*复原初始坐标*/ be_lined=0; /*一个方块刚出现时没有成行*/ shape=next_shape; dir=next_d
6、ir; next_shape=get_random(7); next_dir=get_random(4); eras_fk(55,5,shape,dir);/*擦去前一个方块*/ display_fk(55,5,next_shape,next_dir);/*显示下一个方块*/ display_fk(now_position.x,now_position.y,shape,dir);/*显示目前方块*/ fall_to_land=0; while (!fall_to_land) for (i=15000-1500*speed_level;i0;i-) getinput(); /*接受键盘输入*/
7、fk_down(); /*方块自动下落*/ /m_sound(350,500); /*块落下的声音*/ check_line(); /*检查有没有可消去的行*/ if (be_lined) m_sound(250,1000); else m_sound(350,500); return 0; /*-*/ void init() int i,j; for (i=0;i20;i+) for (j=0;j21 | (x+j*2)21 | (y+i)j- ) if (backgroundij=0) /*不成行的条件*/ k=0; if (k=1) /*如果成行*/ be_lined=1; /*成行标志
8、*/ for (line=i;lineline-) for (n=9;nn-) backgroundlinen=backgroundline-1n; /*逐次下移一行*/ i=i+1; /*把下一次待检的行重新设定*/ void game_over() setxy(35,1);GAME OVER exit(0);void clscreen() system(clsvoid setxy(int x,int y) HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); COORD place; place.X = x; place.Y = y; Set
9、ConsoleCursorPosition(hConsole, place);/* Colors defined for SetColor(int) */ enum BLACK = 0, DARK_BLUE = 1, DARK_GREEN = 2, TEAL = 3, DARK_RED = 4, DARK_PURPLE = 5, GOLD = 6, GREY = 7, DARK_WHITE = 8, BLUE = 9, GREEN = 10, CYAN = 11, RED = 12, PURPLE = 13, YELLOW = 14, WHITE = 15 void SetColor(const int foreground, const int background) int Color = foreground + (background * 16); SetConsoleTextAttribute(hConsole, Color); return;你把这段拿回去看哈吧,这是一个俄罗斯方块的程序,就是在控制台运行的,就是用你所说的 纯数字和字符所运行,你现在只能在dos 下显示那些纯数字的东西,是因为你很多技术性的手法,你还不会,但你学习到一定程度后,你就会有所领悟,也不要太心急,当你练好内功后,修炼招数,应该会很快的!希望对你有帮助
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1