思路:
1、再定義兩個變數,用於存放玩家的座標的備份(值)。
2、在地圖模組中,把玩家的座標賦給玩家的備份,對當前座標進行備份。
3、因為在地圖模組中,按下enter鍵移動後,玩家的座標會根據方向隨之改變。所以先檢測玩家是否撞牆(當玩家的值等於牆的值),把現在玩家的值賦值給之前備份的座標,實現玩家座標不在根據方向改變。
// 2021.2.24(作業).cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include using namespace std;
#define key_down(vk_code) getasynckeystate(vk_code)&0x8000?1:0
int _tmain(int argc, _tchar* ar**)
, ,
, ,
, ,
, ,
, ,
, ,
, ,
};while (true)//用於進行迴圈重新整理
}else if (key_down(vk_up))//同上
}if (key_down(vk_return))//檢測是否按下enter鍵
else if (1 == nmenustate)//如果當前箭頭位置為遊戲設定
else if (2 == nmenustate)
}//畫出選單
cout << "■■■■■■■■■■■■■■■■■■■■" << endl;//因為放在while(true)裡面,所以這裡會一直執行
cout << "■■■■■■■■■■■■■■■■■■■■" << endl;
if (0 == nmenustate)//畫箭頭位置
else if (1 == nmenustate)
else if (2 == nmenustate)
cout << "■■■■■■■■■■■■■■■■■■■■" << endl;
cout << "■■■■■■■■■■■■■■■■■■■■" << endl;
} //地圖介面
if (1 == ngamestate)
//資料更新,要在渲染的前面
//設定按鍵讓小人移動
if (key_down(vk_up))
else if (key_down(vk_down))
else if (key_down(vk_left))
else if (key_down(vk_right))
//檢測玩家是否撞牆
if (1 == arrmap[nplayerrow][nplayercol]) //當玩家的值為1
//渲染
//二維陣列的遍歷
for (int i = 0; i < 15; i++) //行數為15
else if (i == nplayerrow && j == nplayercol)//如果當前的行為玩家的行,當前的列為玩家的列(當前的位置為玩家的位置)
else
}cout << endl;//換行,排列成二維陣列的形狀}}
//設定介面
if (2 == ngamestate)
cout << "我是設定頁面" << endl;
} //退出介面
else if (3 == ngamestate)
cout << "我是退出頁面" << endl;
} system("cls");//系統清屏
}system("pause");
return 0;
}
推箱子(c 控制台)
0空地 1牆 3目的地 4箱子 5人 7箱子在目的地 8人在目的地 int map 10 10 void drawmap for int i 0 i 10 i for int j 0 j 10 j switch map i j case 0 cout break case 1 cout break ...
基於c 實現的推箱子遊戲(控制台程式)
基於c 實現的小遊戲推箱子,執行環境windows,vs下編譯,這個小遊戲很簡單實現,首先先自己想一下讓自己來玩這個遊戲需要什麼,1 遊戲介面 及地圖 由地圖聯想到我們可以設定遊戲的關數 本程式中我只寫了一關,可以實現靈活新增 2 介面需要什麼 遊戲所需要的元素 及箱子 box 人 people 目...
C 控制台實現貪吃蛇遊戲
剛學完了c語言,便嘗試的寫了貪吃蛇的 但是效果不佳,很多的bug,所以,這個學了c 便重新的寫了這個小遊戲,用類來封裝!先是標頭檔案 struct snake class snake snake void display 顯示蛇身函式 void rightmove 右移函式 void leftmov...