C++¿Î³ÌÉè¼ÆÌ°³ÔÉßСÓÎÏ·(ÄÚ¸½ÍêÕûÔ´ÂëÓ븽¼þ)

Áù¡¢½ÌʦÆÀÉó

½ÌʦÆÀÓï ʵÑé³É¼¨

£¨ËäÈ»ÉÏ»úÖ÷Òª²àÖØÓÚÑéÖ¤ÎÊÌ⣬µ«Êǽ¨Òé¸÷λÀÏʦ´Ó½â¾ö ¡°¹¤³Ì¼¼ÊõÎÊÌ⡱£¬ÌرðÊÇ¡°¸´ÔÓ¹¤³ÌÎÊÌ⡱µÄ½Ç¶ÈÈ¥ÆÀÉóѧ ÉúÉÏ»ú¹ý³Ì¼°ÉÏ»ú±¨¸æ£¬Ö÷ÒªÄÚÈݰüÀ¨Ìá³öÎÊÌâ¡¢·ÖÎöÎÊÌâ¡¢ ½â¾öÎÊÌâ¼°ÑéÖ¤ÎÊÌâ¡£ ÒªÓнÏÏêϸµÄÆÀÉóÒâ¼û ¡££©

Ç©Ãû£º

ÈÕÆÚ£º

¸½ ¼

Óû§Ê¹ÓÃÊÖ²á

1¡¢±àÒëÔËÐм´¿ªÊ¼ÓÎÏ·¡£

2¡¢°´Ð¡Ð´×Öĸ wsad ¼´¿É½øÐÐÓÎÏ·µÄ²Ù×÷¡£ 3¡¢°´ÈÎÒâ¼üÔÝÍ£ÓÎÏ· ³ÌÐòÔ´´úÂë

#include #include #include #include #include using namespace std; #define #define #define #define #define #define #define #define #define #define #define #define class

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; // ¼Ç¼ÉßÍ·µÄÒÆ¶¯·½Ïò

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)