|
|
#2
寒风中的细雨2010-12-04 19:09
#include <iostream.h>
#include <time.h> #include <conio.h> #include <windows.h> #include <stdio.h> const int LENGTH = 25;//最大的图 class SNAKE { public: SNAKE():size(10),s1(1),s2(1){} int step(); int init(); int show(); int change(); private: int size; int table[LENGTH][LENGTH]; int s1, s2;//初始位置 int x, y;//食物 }; int SNAKE::init() { int i=0, j=0; for(i=0; i<=size; ++i) for( j=0; j<=size; ++j ) table[i][j] = 0; for( i=0; i<=size; ++i ) { table[0][i] = 1; table[i][size] = 1; table[i][0] = 1; table[size][i] = 1; } return 0; } int SNAKE::change() { x = rand()%(size-1) + 1; y = rand()%(size-1) + 1; table[x][y] = 2; return 0; } int SNAKE::step() { int m; while( s2!=y || s1!=x ) { system("cls"); table[s1][s2] = 'S'; show(); m = getch(); if( m=='w' ) { table[s1][s2] = 0; --s1; if( s1==0 ) { s1 = size-1; } table[s1][s2] = 'S'; } else if( m=='s' ) { table[s1][s2] = 0; ++s1; if( s1==size ) { s1 = 1; } table[s1][s2] = 'S'; } else if( m=='a' ) { table[s1][s2] = 0; --s2; if( s2==0 ) { s2 = size-1; } table[s1][s2] = 'S'; } else if( m=='d' ) { table[s1][s2] = 0; ++s2; if( s2==size ) { s2 = 1; } table[s1][s2] = 'S'; } system("cls"); show(); } return 0; } int SNAKE::show() { int i, j; for(i=0; i<=size; ++i) { for( j=0; j<=size; ++j ) printf("%c", table[i][j]); printf("\n"); } return 0; } int main() { SNAKE s; s.init(); srand(time(0)); s.change(); while(1) { if(!s.step()) { s.change(); } } return 0; } |
>
> *
>
>
>
> S
>
1.随机在地图中产生一个星号,代表蛇的食物。
2.手控 用wasd四个字母键 代表上下左右。
3.S字母代表蛇,使用wasd进行手动控制蛇的移动。
4.S碰到食物时,再随机生成另一个食物。
5.注意不要求蛇的身体动态加长以及蛇身的惯性移动。
我是初学者,请各位帮忙做下,谢谢了