2015-07-28 76 views
0

我已經制定了一個程序,使整個遊戲工作完美,唯一的事情我不能做的是檢查贏。 我在兩個文件中製作了遊戲: 1.主要 2.功能。 這是「主」文件:連接4 - 無法檢查程序檢查是否有人贏得

#include <iostream> 
#include <sstream> 
#include <windows.h> 
#include <string> 

using namespace std; 


void getname(); 
void scoregiving(); 
void gamestart(); 
void boardmaking(); 
void fullgameplay(); 

int main() 
{ 
    gamestart(); 
    getname(); 
    scoregiving(); 
    fullgameplay(); 
} 

這是函數文件:

#include <iostream> 
#include <sstream> 
#include <Windows.h> 
#include <string> 

using namespace std; 

string p1, p2; 
int tu, 
    board[6][7], 
    colomuns[7], 
    makeboard, 
    makeboard1, 
    scoregive, 
    scoregive1, 
    input, 
    colomunss, 
    check, 
    check1; 

void line() 
{ 
    cout << "|=|=|=|=|=|=|=|\n|"; 
} 
void getname() 
{ 
    cout << "\n\nPlayer, Please Enter Your Name. You'll Be X\n<< "; 
    cin >> p1; 
    cout << "2nd Player, Please Enter Your Name. You'll Be O\n<< "; 
    cin >> p2; 
    tu = 1; 
} 
void gamestart() 
{ 
    cout << "      (--OOO--OOO---OOO--OOO--)\n"; 
    cout << "      |XX========XXX========XX|\n"; 
    cout << "      ||CONNECT 4 BY: NETVIZHEN||\n"; 
    cout << "      |XX========XXX========XX|\n"; 
    cout << "      (--OOO--OOO---OOO--OOO--)"; 
} 
void boardmaking() 
{ 
    cout << "\n\nBoard:\n"; 
    cout << "\n 0 1 2 3 4 5 6\n"; 
    line(); 
    for (makeboard = 0; makeboard <= 5; makeboard ++) 
     for (makeboard1 = 0; makeboard1 <= 6; makeboard1++) 
     { 
      if (board[makeboard][makeboard1] == 0) 
      { 
       cout << " |"; 
      } 
      else if (board[makeboard][makeboard1] == 1) 
      { 
       cout << "X|"; 
      } 
      else if (board[makeboard][makeboard1] == 2) 
      { 
       cout << "O|"; 
      } 
      if (makeboard1 == 6) 
      { 
       cout << "\n"; 
       line(); 
      } 
     } 
} 
void scoregiving() 
{ 
    for (scoregive = 0 ; scoregive < 6 ; scoregive++) 
     for (scoregive1 = 0 ; scoregive1 < 7 ; scoregive1++) 
       board[scoregive][scoregive1] = 0; 
    for (colomunss = 0; colomunss <= 6; colomunss++) 
     colomuns[colomunss] = 0; 
} 
void wincheck() 
{ 
    for (check = 0; check <=5; check++) 
     for (check1 = 0; check1 <= 6; check1++) 
      if (board[check][check1] == tu) 
       if (board[check - 1][check1] == tu && board[check - 2][check1] == tu && board[check - 3][check1] == tu && board[check][check1] == tu) 
        cout << "ggh"; 
} 
void putin() 
{ 
    cout << "\n<< "; 
    cin >> input; 
    if (input >= 7) 
     cout << "\nThis Location Is Outside The Board. Please Retry."; 
    else if (colomuns[input] > 5) 
    cout << "\nThis Column Is Full. Please Retry."; 
    else 
    { 
     board[5-colomuns[input]][input] = tu; 
     colomuns[input]++; 
     wincheck(); 
     if (tu == 2) 
      tu--; 
     else if (tu == 1) 
      tu++; 
    } 
} 
void fullgameplay() 
{ 
    while(true) 
    { 
     boardmaking(); 
     putin(); 
    } 
} 
+0

什麼不起作用?告訴我們你的嘗試。 – Sorin

回答

1

它是一個井字棋遊戲? 但如果是那麼爲什麼第&列的大小不一樣,因爲如果對角線上有他的連勝條件,那麼確定獲勝者將會是一個問題。

+0

這是「連接4」,通常在7x6板上播放。 – stefaanv

0

蠻力:從每個位置開始,只要位置在板子上,不是空的,就像原來的位置一樣,在八個不同的方向上移動。如果你達到4,那麼處於原始位置的玩家就是贏家。

既然你應該各自發揮後做的,最多隻有一個球員能有一個連接4

您可以進行8個方向使用x和y所需要的增量每個方向的數組。

0

如前所述,您將希望檢查8個循環中的每個方向,或使用布爾值來檢查每個時間。

bool n = true; 
bool ne = true; 
bool e = true; 
bool se = true; 
bool s = true; 
bool sw = true; 
bool w = true; 
bool nw = true; 

for (int count = 0; count < 4; count++) 
{ 
    if (board[x + count][y] != tu) 
    { 
    e = false; 
    } 

    if (board[x + count][y + count] != tu) 
    { 
    ne = false; 
    } 
//continue for each direction. 

    if(n == true || ne == true || e == true //and so on) 
    { 
    //player wins 
    } 
} 

這是可以使用的主要概念,但顯然必須做一些更改以適合您的代碼。