Áù¡¢½ÌʦÆÀÉó
½ÌʦÆÀÓï ʵÑé³É¼¨
£¨ËäÈ»ÉÏ»úÖ÷Òª²àÖØÓÚÑéÖ¤ÎÊÌ⣬µ«Êǽ¨Òé¸÷λÀÏʦ´Ó½â¾ö ¡°¹¤³Ì¼¼ÊõÎÊÌ⡱£¬ÌرðÊÇ¡°¸´ÔÓ¹¤³ÌÎÊÌ⡱µÄ½Ç¶ÈÈ¥ÆÀÉóѧ ÉúÉÏ»ú¹ý³Ì¼°ÉÏ»ú±¨¸æ£¬Ö÷ÒªÄÚÈݰüÀ¨Ìá³öÎÊÌâ¡¢·ÖÎöÎÊÌâ¡¢ ½â¾öÎÊÌâ¼°ÑéÖ¤ÎÊÌâ¡£ ÒªÓнÏÏêϸµÄÆÀÉóÒâ¼û ¡££©
Ç©Ãû£º
ÈÕÆÚ£º
¸½ ¼
Óû§Ê¹ÓÃÊÖ²á
1¡¢±àÒëÔËÐм´¿ªÊ¼ÓÎÏ·¡£
2¡¢°´Ð¡Ð´×Öĸ wsad ¼´¿É½øÐÐÓÎÏ·µÄ²Ù×÷¡£ 3¡¢°´ÈÎÒâ¼üÔÝÍ£ÓÎÏ· ³ÌÐòÔ´´úÂë
#include
N20 / / µØÍ¼´óС WALL5 HEAR1 TAIL 2 BODY3 FOOD4 UP 'w' DOWN's' LEFT 'a' RIGHT 'd' GMAE_TIME100 RetroSnaker {
// ÉèÖÃÓÎÏ·µÄ»æÖÆËÙ¶È
// ǽ // ÉßÍ· // Éßβ // ÉßÉí // ʳÎï
// ÉßµÄǰ½ø·½Ïò£ºÉÏÏÂ×óÓÒ
EMPTY0 // ¿Õ
public :
RetroSnaker() { Init(); } bool gameOver; void move();
void move( char ch ); private :
int map[ N][ N]; int directionMap[ int hearX, hearY; int tailX, tailY; int foodX, foodY; bool eatFood; void Init(); void gotoXY( int
/ / ³õʼ»¯
x, int
y);
// ¹â±êÌø×ªµ½ÆÁÄ»µÄÏàӦλÖÃ
// ¶þάµØÍ¼ N][ N]; // ·½Ïòͼ
// ÉßÍ·×ø±ê // ÉßÎ²×ø±ê // ʳÎï×ø±ê // ±ê¼ÇÊÇ·ñ³Ôµ½Ê³Îï // ÓÎÏ·ÊÇ·ñ½áÊø
void againFood(); void erasingTheTail(); void erasingTheHear( };
void RetroSnaker ::move() {
// ʳÎï±»³Ô£¬ÔٴβúÉúʳÎï
// ²Á³ýβ°Í char ch );
// ²Á³ýÉßÍ·
switch (directionMap[hearY][hearX]) {
case UP:
if ( FOOD== map[hearY - 1][hearX])
againFood();
else if ( EMPTY== map[hearY - 1][hearX])
erasingTheTail(); else {
gameOver = true ; / / ûÓÐÓöµ½Ê³Îï»òÕ߿գ¬Ôò±íʾÓÎÏ·½áÊø break ; }
erasingTheHear( break ; case DOW:N
if ( FOOD== map[hearY + 1][hearX])
againFood();
else if ( EMPTY== map[hearY + 1][hearX])
erasingTheTail(); else {
gameOver = true ; / / ûÓÐÓöµ½Ê³Îï»òÕ߿գ¬Ôò±íʾÓÎÏ·½áÊø break ; }
erasingTheHear( break ; case LEFT:
if ( FOOD== map[hearY][hearX - 1])
againFood();
else if ( EMPTY== map[hearY][hearX - 1])
erasingTheTail(); else {
gameOver = true ; / / ûÓÐÓöµ½Ê³Îï»òÕ߿գ¬Ôò±íʾÓÎÏ·½áÊø break ; }
erasingTheHear( break ; case RIGHT:
if ( FOOD== map[hearY][hearX + 1])
// ³Ôµ½Ê³Îï
LEFT);
// ²Á³ýβ°Í
// ʲô¶¼Ã»Óöµ½ // ³Ôµ½Ê³Îï
DOW)N;
// ²Á³ýβ°Í
// ʲô¶¼Ã»Óöµ½ // ³Ôµ½Ê³Îï
UP);
// ²Á³ýβ°Í
// ʲô¶¼Ã»Óöµ½ // ³Ôµ½Ê³Îï
againFood();
else if ( EMPTY== map[hearY][hearX + 1])
erasingTheTail(); else {
gameOver = true ; / / ûÓÐÓöµ½Ê³Îï»òÕ߿գ¬Ôò±íʾÓÎÏ·½áÊø // ²Á³ýβ°Í
// ʲô¶¼Ã»Óöµ½
break ; }
erasingTheHear( RIGHT);
break ; default :
break ; } }
void RetroSnaker ::move( char ch) {
directionMap[hearY][hearX] = move(); }
void RetroSnaker ::Init() {
int i = 0,j=0;
gameOver = false ; eatFood =
false ;
for (i = 0; i <
N; i++)
for (j = 0; j <
N; j++) { map[i][j] =
EMPTY;
directionMap[i][j] = } for (i = 0; i <
N; i++) { map[0][i] = WALL;
map[ N - 1][i] = WALL; map[i][0] = WALL;
map[i][ N- 1] = WALL;
}
// ³õʼ»¯ÉßÍ· hearX = N/ 2; hearY = N/ 2; map[hearY][hearX] =
HEAR; directionMap[hearY][hearX] = ch;
// Çå¿Õ¶þάÊý×é EMPTY; // Çå¿Õ·½Ïòͼ
// ³õʼ»¯Ç½
RIGHT; // ¼Ç¼ÉßÍ·µÄÒÆ¶¯·½Ïò