藍鷗(www.lanou3g.com)是一家集產、學、研、創為一體的綜合性移動互聯網研發培訓機構,致力于iOS開發、Unity3D游戲開發、Android開發、HTML5前端開發和Web安全攻防等技術人才的培養。
usingSystem;
namespaceMyFirstGame
{
classMainClass
{
publicstaticvoidMain(string[]args)
{
//游戲即將啟動時做一些操作
constintmapW=46;//地圖寬度
constintmapH=16;//地圖高度
//定義常量
constintemptyTiledMap=0;//空磚塊
constintTBTiledMap=1;//頂部和底部磚塊
constintLRTiledMap=2;//左右兩邊的磚塊
constintPlayer=3;//玩家
//游戲初始化變量
boolisOver=false;//游戲是否結束
int[,]mapData=newint[mapH,mapW];//地圖數據
string[,]mapView=newstring[mapH,mapW];//地圖視圖
intposW=1;//玩家在W的位置
intposH=1;//玩家在H的位置
//初始化地圖數據
for(inti=0;i
for(intj=0;j
//j將地圖初始化為空磚塊
mapData[i,j]=emptyTiledMap;
//如果磚塊處于最上方側或最下方,就初始化為TBTiledMap
if(i==0||i==mapH-1){
mapData[i,j]=TBTiledMap;
}elseif(j==0||j==mapW-1){
//如果磚塊處于最右側或最左側,就初始化為LRTiledMap
mapData[i,j]=LRTiledMap;
}elseif(i==posW&&j==posH){
//當前位置是玩家
mapData[i,j]=Player;
}
}
}
//游戲主循環
while(!isOver){
//游戲啟動后,主循環張做一些操作
//計算機計算數據->將數據轉成視圖->把視圖顯示出來->獲取玩家的事件更新數據
//刷新地圖
for(inti=0;i
for(intj=0;j
//從地圖數據中獲取數據,決定磚塊如何顯示
//取出磚塊數據
inttiledData=mapData[i,j];
//磚塊視圖
stringtiledView="";
//確定磚塊的顯示
switch(tiledData){
caseemptyTiledMap:
tiledView="";
break;
caseTBTiledMap:
tiledView="-";
break;
caseLRTiledMap:
tiledView="|";
break;
casePlayer:
tiledView="P";
break;
}
//將磚塊視圖存放到地圖視圖中
mapView[i,j]=tiledView;
//將每行的每個字符拼接到字符串中
//str+=mapView[i,j];
}
}
//顯示地圖
for(inti=0;i
//創建一個用于接收一行信息的字符串
stringstr="";
for(intj=0;j
//將每行中的所有字符串進行拼接
str+=mapView[i,j];
}
//打印一行的內容
Console.WriteLine(str);
}
//保存玩家當前位置
intoldPosW=posW;
intoldPosH=posH;
//等待用戶輸入
//獲取用戶輸入的按鍵字符串
stringkey=Console.ReadKey().KeyChar.ToString();
if(key=="W"||key=="w"){
//讓玩家向上移動
if(posH>1){
posH--;
}
}elseif(key=="S"||key=="s")
{
//讓玩家向下移動
if(posH2){
posH++;
}
}elseif(key=="A"||key=="a"){
//讓玩家向下左移動
if(posW>1){
posW--;
}
}elseif(key=="D"||key=="d"){
//讓玩家向下右移動
if(posW2){
posW++;
}
}elseif(key=="Q"||key=="q"){
//如果按下Q退出游戲
isOver=true;
continue;
}
//更新地圖數據
mapData[oldPosH,oldPosW]=emptyTiledMap;
mapData[posH,posW]=Player;
}
Console.WriteLine("客觀,下次再來哦");
}
}
}