用C語言、C++編寫一個(gè)迷宮游戲(代碼實(shí)例)_第1頁
用C語言、C++編寫一個(gè)迷宮游戲(代碼實(shí)例)_第2頁
用C語言、C++編寫一個(gè)迷宮游戲(代碼實(shí)例)_第3頁
用C語言、C++編寫一個(gè)迷宮游戲(代碼實(shí)例)_第4頁
用C語言、C++編寫一個(gè)迷宮游戲(代碼實(shí)例)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、¡¡¡¡×î³õÓÃCÓïÑÔдµÄ£¬Ð´ÁËÒ»Ìì¶àдºÃ¡£ºóÀ´ÓÖ¸ÄÓÃC+£¬Ó

2、01;ÓÚ¶ÔC+²»ÊǺÜÊìϤ£¬¸Ä³ÉC+ÓÃÁËÈýËÄÌì²Å¸ÄºÃ¡£¡¡¡¡³ÌÐòÊÇÔ

3、;ÚVC+6.0ÖÐдµÄ£¬Ð½¨Ò»¸öWin32 Application¼´¿É¡£¡¡¡¡×î³õ¾õµÃ³ÌÐòµÄ¹Ø¼üÓ

4、¦¸ÃÊÇÇó½âÃÔ¹¬£¬ºóÀ´·¢ÏÖÇó½âÃÔ¹¬ºÜ¼òµ¥£¬ÄѵãÊÇÈçºÎÉ

5、ú³ÉÃÔ¹¬¡£ ÕâÀï²ÉÓýӺÏͼµÄÉî¶ÈÓÅÏȱéÀú£¬Éú³ÉÃÔ¹¬µÄË

6、;ã·¨£¬¶¨ÒåÁËËÑË÷²½³¤ÒÔ±ã¿ØÖÆÃÔ¹¬·ÖÖ§¶àÉٺͷÖÖ§Éî¶È¡

7、;£ ÓÉÓÚ³ÌÐòÖжദÓõ½Á´±í£¬ËùÒÔ¶ÔÓÚÃÔ¹¬Çó½â²¿·ÖÒ²ÊÇ

8、1;ÃÁ´±í£¬Ã»ÓÐÓÃÕ»¡£ ´úÂë±È½Ï¶à£¬¾Í²»³öÁË£¬Ö»ÁоÙÁËCºÍC+

9、Ö÷Ҫȫ¾Ö±äÁ¿ºÍº¯Êý£¬Ê±¼äÓÐÏÞ±¾È˾Ͳ»È¥Ò»Ò»±à¼­´úÂë

10、ÁË£»ÏëҪȫ²¿´úÂë˽ÁÄÎÒ¡¡¡¡/¡¡¡¡/C+Ö÷Òª±äÁ¿ºÍº¯Êý¶¨Òå¡&#

11、161;¡¡/maze.h/¡¡¡¡/È«¾Ö±äÁ¿¡¡¡¡#ifndef _GLOBAL_VAR_¡¡¡¡#define _GLOBAL_VAR_¡¡¡¡#include "MazeClass.h"¡¡¡¡class CMaze *game=NULL; /Ã

12、2;¹¬Àà¶ÔÏóÖ¸Õë¡¡¡¡class CRoom *map; /ÓÎÏ·mapÖ¸Õë¡¡¡¡HWND hWndMain; /Ö÷´°¿Ú¾ä±ú¡¡¡¡HBITMAP

13、h_MemBm=NULL; /ÄÚ´æλͼ¡¡¡¡HDC h_MemDC=NULL; /ÄÚ´æDC¡¡¡¡RECT rCliRet; /ÓÎÏ·´°¿Ú´óС¡¡¡¡HBRUSH hBrushes10; /»æ&

14、#214;Æ·½¿éµÄ»­Ë¢¡¡¡¡#endif¡¡¡¡/LinkList.h/¡¡¡¡#ifndef _LINK_LIST_H¡¡¡¡#define _LINK_LIST_H¡¡¡¡#include¡¡¡¡template¡¡

15、;¡¡class Node¡¡¡¡¡¡¡¡private:¡¡¡¡Node *nextptr;¡¡¡¡public:¡¡¡¡T data;¡¡¡¡Node();¡¡¡¡Node();¡¡¡¡Node *next() const;¡¡

16、1;¡Node(const T &item, Node *ptrnext=NULL);¡¡¡¡void setNext(Node *ptrnext=NULL);¡¡¡¡¡¡¡¡template¡¡¡¡class LinkList¡¡¡¡¡¡¡¡private:¡¡¡¡Node *head;¡

17、¡¡¡Node *tail;¡¡¡¡Node *curr;¡¡¡¡Node *getNode(const T &item, Node *ptrnext=NULL);¡¡¡¡void freeNode(Node *p);¡¡¡¡int size;¡¡¡¡public:¡¡¡¡LinkList();¡¡&

18、#161;¡LinkList();¡¡¡¡Node *next();¡¡¡¡Node *current();¡¡¡¡Node *first();¡¡¡¡Node *last();¡¡¡¡Node *findNode(int index);¡¡¡¡Node *findNode(const T &item); /´Ë

19、5;¦ÄÜÐèҪģ°åÀàÖØÔصÈÓÚÔËËã·û¡¡¡¡void reset();¡¡¡¡int getSize();¡¡¡¡int insertFront(const T &item);&#

20、161;¡¡¡int insertTail(const T &item);¡¡¡¡int insertAfter(const T &item, int index);¡¡¡¡int deleteFront(T *item);¡¡¡¡int deleteTail(T *item);¡¡¡¡int deleteNode(T *item, int index);¡¡¡

21、¡void clear();¡¡¡¡bool isEmpty();¡¡¡¡¡¡¡¡#endif¡¡¡¡/MazeClass.h/¡¡¡¡#ifndef _MAZE_CLASS_H¡¡¡¡#define _MAZE_CLASS_H¡¡¡¡#include¡¡¡¡#incl

22、ude¡¡¡¡#include¡¡¡¡#include "LinkList.h"¡¡¡¡/ÒýÈëÍⲿ±äÁ¿¡¡¡¡extern HWND hWndMain; / Ö÷´°¿Ú¾ä±ú¡

23、;¡¡¡extern HBITMAP h_MemBm; / ÄÚ´æλͼ¡¡¡¡extern HDC h_MemDC; / ÄÚ´æDC¡¡¡¡extern RECT rCliRet; / ´°¿Ú´óС¡¡¡¡extern class CMa

24、ze *game; / ÃÔ¹¬ÀàÖ¸Õë¡¡¡¡extern class CRoom *map; /ÓÎÏ·mapÖ¸Õë¡¡¡¡extern HBRUSH hBrushes10; /»æÖÆ·¾¶»­Ë¢

25、1;¡¡¡#define RIGHT 0 /ÏòÓÒ¡¡¡¡#define DOWN 1 /ÏòÏ¡¡¡¡#define LEFT 2 /Ïò×ó¡¡¡¡#define UP 3 /Ïòºó¡¡¡¡#define NODIR 4¡

26、1;¡¡#define LEFT_WALL 0 /×ó±ßǽ±Ú¡¡¡¡#define UP_WALL 1 /ÉÏÃæǽ±Ú¡¡¡¡#define IS_WALL 0 /ÓÐǽ±Ú¡¡¡¡#define NO_WALL 1 /

27、5;»ÓÐǽ±Ú¡¡¡¡#define HAS_DEAL 0 /map´¦Àí״̬£¬ÒѾ­´¦Àí¡¡¡¡#define IN_DEAL 1 /ÕýÔÚ´¦Àí¡

28、1;¡¡#define NOT_DEAL 2 /δ´¦Àí¡¡¡¡#define STEP 12 /ËÑË÷²½³¤¡¡¡¡#define AUTO_MODE 0 /Íæ¼ÒÀàÐ͵çÄÔ×Ô¶¯

29、¡¡¡¡#define PLAY_MODE 1 /ÊÖ¶¯¡¡¡¡#define INIT 0 /Íæ¼Ò״̬³õʼ»¯¡¡¡¡#define GOING 1 /ÔËÐС¡¡¡#define STOP 2 /&#

30、212;ÝÍ£¡¡¡¡#define OVER 3 /½áÊø¡¡¡¡#define IDT_TIMER1 1 / ¶¨Ê±Æ÷±àºÅ¡¡¡¡#define IDT_TIMER2 2¡¡¡¡/×ø±êµã&#

31、192;à¡¡¡¡class point¡¡¡¡¡¡¡¡public:¡¡¡¡int x;¡¡¡¡int y;¡¡¡¡point();¡¡¡¡point();¡¡¡¡point(int x, int y);¡¡¡¡point(co

32、nst point &p);¡¡¡¡point &operator=(const point &p);¡¡¡¡bool operator=(const point &p);¡¡¡¡¡¡¡¡/RoomÀà,Éú³ÉÃÔ¹¬Óõ½¡¡¡&#

33、161;class CRoom¡¡¡¡¡¡¡¡friend class CMaze;¡¡¡¡private:¡¡¡¡point pos;¡¡¡¡int status; /0:δ·ÃÎÊ, 1:ÕýÔÚ·ÃÎÊ, 2:ÒÑ·

34、95;ÎÊ¡¡¡¡int upstatus; /0:¿ÉÒÔͨ¹ý 1:²»¿ÉÒÔͨ¹ý¡¡¡¡int leftstatus; /0:¿ÉÒÔͨ¹ý 1:²»¿ÉÒÔ

35、05;¨¹ý¡¡¡¡/ÿ¸ö½ÚµãÖ»ÐèÅжÏup&leftÊÇ·ñ¿ÉÒÔͨ¹ý¼´¿É¡¡¡¡¡¡¡¡/&#

36、195;Ô¹¬Ç½±ÚÀà¡¡¡¡class CWall¡¡¡¡¡¡¡¡friend class CMaze;¡¡¡¡private:¡¡¡¡point pos; /ǽ±ÚλÖá¡¡¡

37、int dir; /·½Ïò 1:ºá 0:Êú¡¡¡¡public:¡¡¡¡CWall();¡¡¡¡CWall(const point &pos, const int &dir);¡¡¡¡CWall(const CWall &p);¡¡¡¡CWall();¡¡¡&

38、#161;CWall &operator=(const CWall &p);¡¡¡¡bool operator=(const CWall &p);¡¡¡¡¡¡¡¡class CBoard¡¡¡¡¡¡¡¡protected:¡¡¡¡HBRUSH hBrush; /»æÖƱ³&

39、#190;°»­Ë¢¡¡¡¡HPEN hPen; /»æÖƱ߿òÏߵĻ­±Ê¡¡¡¡point m_pos, m_entry, m_exit;¡¡¡¡int m_size, m_cell, m_nx, m_ny;¡¡¡¡i

40、nt m_mode, m_speed, m_status;¡¡¡¡void fillCell(point pos, int color, int dir);¡¡¡¡void displayText(point p, char *text);¡¡¡¡public:¡¡¡¡CBoard();¡¡¡¡CBoard();¡¡¡¡int getCell();¡

41、;¡¡¡int getMode();¡¡¡¡int getSpeed();¡¡¡¡int getStatus();¡¡¡¡int getSize();¡¡¡¡point getPos();¡¡¡¡point getEntry();¡¡¡¡point getExit();¡¡¡¡void m

42、essageBox(char *errMsg, char *title, int style);¡¡¡¡void setTimer(int id, int time);¡¡¡¡void killTimer(int id);¡¡¡¡¡¡¡¡/·¾¶½ÚµãÀà¡¡¡¡class CPathNode&

43、#161;¡¡¡¡¡¡¡friend class CPlayer;¡¡¡¡private:¡¡¡¡int index; /½ÚµãÔÚÁ´±íÖбàºÅ¡¡¡¡int indir; /×î³õ½&#

44、248;È¥·½Ïò¡¡¡¡int outdir; /×îºóÒ»´Î³öÈ¥·½Ïò¡¡¡¡class point pos; /½ÚµãλÖá¡¡¡public:¡

45、¡¡¡CPathNode();¡¡¡¡CPathNode(point pos, int index, int indir, int outdir);¡¡¡¡CPathNode();¡¡¡¡CPathNode(const CPathNode &p);¡¡¡¡CPathNode &operator=(const CPathNode &p); /ÖØÔ

46、6;¸³ÖµÔËËã·û¡¡¡¡bool operator=(const CPathNode &p); /ÖØÔصÈÓںš¡¡¡¡¡¡¡/ÓÎÏ·Íæ¼ÒÀà

47、1;¡¡¡class CPlayer: public CBoard¡¡¡¡¡¡¡¡private:¡¡¡¡int curdir; /µ±Ç°µÄÒƶ¯·½Ïò¡¡¡¡int steps; /µ±Ç°²½

48、02;ý¡¡¡¡time_t usedTime, stopTime; /ËùÓÐʱ¼äÓÃʱ¡¡¡¡LinkList path; /±£´æ×ß¹ýµÄÕýȷ·¾¶Á´±&

49、#237;¡¡¡¡LinkList error; /±£´æ×ß¹ýµÄ´íÎó·¾¢Á´±í¡¡¡¡LinkList *mazeptr; /Ö¸Ïòµ±Ç°ÃÔ¹¬µ

50、ÄÖ¸Õë¡¡¡¡int canMove();¡¡¡¡int doOper();¡¡¡¡int autoGo();¡¡¡¡void errOut(char *errMsg);¡¡¡¡void showInfo();¡¡¡¡void drawPath();¡¡¡¡publ

51、ic:¡¡¡¡CPlayer(CMaze *maze);¡¡¡¡CPlayer();¡¡¡¡void onKeyDown(unsigned short key);¡¡¡¡void onTimer(int id);¡¡¡¡¡¡¡¡class CMaze: public CBoard¡¡¡¡¡¡

52、1;¡private:¡¡¡¡LinkList wlist; /´æ·ÅÃÔ¹¬Ç½±ÚÊý¾ÝÁ´±í¡¡¡¡class CPlayer *m_player;¡¡¡¡void drawWall(class CWall wall);¡¡¡&

53、#161;int createWallList(LinkList *list);¡¡¡¡int chgRoomStatus(point pos, LinkList *list, int dir, int depth);¡¡¡¡int createMaze();¡¡¡¡void drawMaze();¡¡¡¡void showTime();¡¡¡¡void showHelpInfo();¡

54、¡¡¡void initBkGnd();¡¡¡¡int newGame();¡¡¡¡void gameOver();¡¡¡¡public:¡¡¡¡CMaze();¡¡¡¡CMaze();¡¡¡¡void dialogBox(HINSTANCE hInst, LPCTSTR IDD, DLGPROC myFunc);¡&

55、#161;¡¡int onInit();¡¡¡¡void initDlg(HWND hDlg);¡¡¡¡void onDlgOk(HWND hDlg);¡¡¡¡void onTimer(int id); /ÓÎÏ·Ö÷¿Øº¯Êý¡¡¡¡void onKeyDown(unsigned short k

56、ey); /ÓÎÏ·Ö÷¿Øº¯Êý¡¡¡¡void onPaint(HDC hdc);¡¡¡¡LinkList *getWallList();¡¡¡¡¡¡¡¡#endif¡¡¡¡/¡¡¡¡/CÓïÑÔ

57、;Ö÷Òª±äÁ¿ºÍº¯Êý¶¨Òå¡¡¡¡/maze.h/¡¡¡¡#include¡¡¡¡#include¡¡¡¡#include¡¡¡¡#include¡¡¡¡#includ

58、e¡¡¡¡#include¡¡¡¡#define M 50000¡¡¡¡#define MAX_NODE_NUMBER 50000¡¡¡¡#define MAXGRADE 150¡¡¡¡#define IDT_TIMER1 1¡¡¡¡#define IDT_TIMER2 2¡¡¡¡#define STEP 16

59、1;¡¡¡#define RIGHT 0¡¡¡¡#define DOWN 1¡¡¡¡#define LEFT 2¡¡¡¡#define UP 3¡¡¡¡#define AUTO_MODE 0¡¡¡¡#define PLAY_MODE 1¡¡¡¡#define UP_WALL 0¡¡¡¡#d

60、efine LEFT_WALL 1¡¡¡¡#define INIT 0¡¡¡¡#define GOING 1¡¡¡¡#define STOP 3¡¡¡¡#define OVER 4¡¡¡¡struct position¡¡¡¡¡¡¡¡int x;¡¡¡¡int y;¡&

61、#161;¡¡¡¡¡¡struct GameInfo¡¡¡¡¡¡¡¡struct position pos;¡¡¡¡int size;¡¡¡¡int timer;¡¡¡¡int nx;¡¡¡¡int ny;¡¡¡¡int cell;¡¡&#

62、161;¡int mode;¡¡¡¡int mazemode;¡¡¡¡int speed;¡¡¡¡int times;¡¡¡¡int status;¡¡¡¡game;¡¡¡¡struct MazeWall¡¡¡¡¡¡¡¡struct position pos;¡

63、;¡¡¡int diretcion;¡¡¡¡¡¡¡¡struct MazeCfg¡¡¡¡¡¡¡¡struct MazeWall dataM;¡¡¡¡struct position entry, exit;¡¡¡¡int num;¡¡¡¡maze;¡¡¡

64、1;struct MapCfg¡¡¡¡¡¡¡¡struct position pos;¡¡¡¡int status;¡¡¡¡int upstatus;¡¡¡¡int leftstatus;¡¡¡¡¡¡¡¡struct MapCfg *map;¡¡¡¡struct travInfo

65、¡¡¡¡¡¡¡¡struct position pos;¡¡¡¡struct travInfo *next;¡¡¡¡¡¡¡¡struct RoadInfo¡¡¡¡¡¡¡¡int index;¡¡¡¡int indir;¡¡¡¡int outdir;¡¡&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論