練習用鍵盤來控制方向的一段程式一直出問題..懇請各位大大幫幫忙

Home Home
引用 | 編輯 cloud0619
2009-08-24 12:14
樓主
推文 x0
小弟第一次發文..
小弟是使用VC++,剛學沒多久,所以使用的語法都非常粗糙,還能請各位大大多多指教
這段程式完成後一定還是有很多BUG@@,但是小弟是想先有功能出來才做調整
不過就在完成a(左)w(上)方向後,另外s(下)d(右)方向怎樣都有問題,目前我先把那段註解掉了..
還能請各位大大幫幫忙看看哪裡有問題..


#include <iostream>
#include <conio.h>

using namespace std;

int game={0};

int re(){ //清除矩陣內的值為0
int i,j;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
game=0;
}
}
return 0;
}

int Drew(){ //每次移動刷新畫面
int i,j;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 Kizuna
2009-08-24 14:17
1樓
  
複製程式
 
#include <iostream> 
#include <conio.h> 
  
using namespace std; 
  
void Drew(int x1, int y1) 
{ 
 for (int i=0;i<4;i++) 
 { 
  for (int j=0;j<4;j++) 
  { 
   if (i==x1 && j==y1) 
   { 
    cout<<"■1"; 
   } 
            else 
   { 
    cout<<"@0"; 
   } 
  } 
  cout<<endl; 
 } 
} 
  
int* ckey(int a[]) 
{ 
 switch(getch()) 
 { 
  case'a':case'A': 
   if(a[1]>0) 
   { 
    a[1]-=1; 
   } 
   break; 
  case'w':case'W': 
   if(a[0]>0) 
   { 
    a[0]-=1; 
   } 
   break; 
  case'd':case'D': 
   if(a[1]<3) 
   { 
    a[1]+=1; 
   } 
   break; 
  case's':case'S': 
   if(a[0]<3) 
   { 
    a[0]+=1; 
   } 
   break; 
  default: 
   break; 
 } 
 system("cls"); 
 Drew(a[0],a[1]); 
 return a; 
} 
int main() 
{ 
 int a[2]={0,0}; 
 Drew(a[0],a[1]); 
    for(;;) 
 { 
  int* b=ckey(a); 
 } 
  
 return 0; 
} 

....~"~

其實~我覺得~能不用全域變數就盡量不要用..

獻花 x1
引用 | 編輯 cloud0619
2009-08-24 16:07
2樓
  
感謝大大的回文,比起小弟我的真是簡單明瞭許多 表情
小弟我只是單純還沒研究到指標,先把指標的*刪掉了,return a 改為 return 0,雖然執行結果不變,但會有其他差別嗎~?

獻花 x0
引用 | 編輯 Kizuna
2009-08-24 19:21
3樓
  
喔~....原來跟我想的不太一樣

算了..............那個是多餘的~....int* b=去掉, int*改void, return a;去掉.........

其實~我比較常寫c#,...vc++6.0我幾乎忘光了...指標其實我也不會用...上面那個是兜出來的

獻花 x0