Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Coding Language C++. Need a start to the project to see what direction to take,

ID: 3700937 • Letter: C

Question

Coding Language C++. Need a start to the project to see what direction to take, your help is greatly appricated.

Part 1: Background Gomoku, also known as Gobang and Five-in-a-row is a two-player board game played traditionally on a 15 x 15 board. Players take alternating turns to place black or white pieces in empty blocks on the grid. A player wins the game by placing 5 of their pieces in an unbroken line, horizontally, vertically or diagonally. In this project you are required to: 1. Implement the Gomoku game for a board size of nxn where 6 S n 15 2. Implement two different algorithms that will play Gomoku against each other.

Explanation / Answer

As per the given data

// represents explanation

C++ code:

#include <iostream> //basic line 1

#include "Array.h"//basicline 2

using namespace std;//basicline3

int Array::operator()(const int nCol, const int nRow)

{

return adData[nRow][nCol];

}

void Array::operator()(const int nCol, const int nRow, int value)

{

adData[nRow][nCol]=value;

}

void Array::operator()()

{

for (int nCol=0; nCol<15; nCol++)

for (int nRow=0; nRow<15; nRow++)

adData[nRow][nCol] = 0;

}

class Array

{

private:

int adData[15][15];

public:

Array()

{

for (int nCol=0; nCol<15; nCol++)

for (int nRow=0; nRow<15; nRow++)

adData[nRow][nCol] = 0;

}

int operator()(const int nCol, const int nRow);

void operator()(const int nCol, const int nRow, int value);

void operator()();

};

[Project]

FileName=camoba.dev

Name=camoba

UnitCount=5

Type=1

Ver=1

ObjFiles=

Includes=

Libs=

PrivateResource=

ResourceIncludes=

MakeIncludes=

Compiler=

CppCompiler=

Linker=

IsCpp=1

Icon=

ExeOutput=

ObjectOutput=

OverrideOutput=0

OverrideOutputName=

HostApplication=

Folders=

CommandLine=

UseCustomMakefile=0

CustomMakefile=

IncludeVersionInfo=0

SupportXPThemes=0

CompilerSet=0

CompilerSettings=

[Unit1]

FileName=main.cpp

CompileCpp=1

Folder=

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit2]

FileName=ujjatek.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit7]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit8]

FileName=Toposz.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit9]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit10]

FileName=Toposz.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit11]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit12]

FileName=Toposz.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit13]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit14]

FileName=Toposz.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit15]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[VersionInfo]

Major=0

Minor=1

Release=1

Build=1

LanguageID=1033

CharsetID=1252

CompanyName=

FileVersion=

FileDescription=Developed using the Dev-C++ IDE

InternalName=

LegalCopyright=

LegalTrademarks=

OriginalFilename=

ProductName=

ProductVersion=

AutoIncBuildNr=0

[Unit3]

FileName=ujjatek.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit4]

FileName=Array.h

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit5]

FileName=Array.cpp

CompileCpp=1

Folder=camoba

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

#include <cstdlib>

#include <iostream>

#include <string>

#include "ujjatek.h"

using namespace std;

int main(void)

{

char ertek;

do

{

puts("++++++++++++++++++++++++++++++++");

puts("+ Amoba Jatek kotelezo program +");

puts("++++++++++++++++++++++++++++++++");

puts("+ Keszitette: Mester Gabor +");

puts("++++++++++++++++++++++++++++++++");

puts("+ Menu valasztas: +");

puts("+ 1. Jatek inditasa +");

puts("+ 2. Info +");

puts("+ q. Kilepes +");

puts("++++++++++++++++++++++++++++++++");

ujjatek a = ujjatek();

cin >> ertek;

switch(ertek)

{

case '1':

puts("A jatek indul");

a.startjatek();

break;

case '2':

puts("Szimpla amoba(Five-in-a-row, Gomoku) Jatek A human Jatekos az 'X', a gep 'O', a Jatekban az nyer aki elobb kirak 5-ot vizszintes, fuggoleges vagy atlos iranyban Kilepni a 'q' betu lenyomasaval lehet. Jo Jatekot!");

break;

default: puts("Hibás karakter!");

break;

}

}

while(ertek!='q');

return 0;

}

#include "ujjatek.h"

#include <cstdlib>

#include <iostream>

#include <string>

using namespace std;

Array prior;

ujjatek::ujjatek()

{

x1 = 0;

y1 = 0;

int i = 0;

int j = 0;

for ( i = 0; i < 9; i++)

{

for ( j = 0; j < 9; j++)

{

tabla[i][j] = 0;

}

}

}

void ujjatek::startjatek()

{

string topbe=" ";

for(int cv=0; cv<12; cv++)

{

for(int cv2=0; cv2<12; cv2++)

{

tabla[cv][cv2]=0;

}

}

char kilep1[3], kilep2[3];

int vege=1, lepesszam=0, lszam=0;

do

{

lszam++;

ujjatek::tablaki();

puts("Kerem az X kordinata erteket:");

cin >> kilep1;

puts("Kerem az Y kordinata erteket:");

cin >> kilep2;

x1=atoi(kilep1);

y1=atoi(kilep2);

x1=x1-1;

y1=y1-1;

cout << "X: " << x1+1 << " Y: " << y1+1 << " ";

if(!strcmp(kilep1,"q") || !strcmp(kilep2,"q"))

{

vege=0;

}

if(x1<9 && x1>=0 && y1<9 && y1>=0)

{

if(tabla[y1][x1]==1 || tabla[y1][x1]==2)

{

puts("Ide nem tehetsz X-et");

}

else

{ //puts("tablaxy=1");

tabla[y1][x1]=1;

//puts("if winsgame");

if(ujjatek::WinsGame4(y1,x1)!=1)

{

ujjatek::priornul();

ujjatek::DoMove();

lepesszam++;

if(ujjatek::ellenrak()==1)

{

ujjatek::tablaki();

puts("Vesztettel!");

vege=0;

}

}

else

{

vege=0;

ujjatek::tablaki();

puts("Nyertel!");

return;

}

}

}

else

{

if(x1==113 || y1==113)

{

vege=0;

}

puts("Kerem a megadott szamok 1-9-ig legyenek");

}

if(lepesszam>=40)

{

vege=0;

ujjatek::tablaki();

puts("A tabla betelt, dontetlen!");

}

}

while(vege!=0);

}

void ujjatek::tablaki()

{

int osz;

puts("0 1 2 3 4 5 6 7 8 9");

for(int cv=0; cv<9; cv++)

{

osz=cv+1;

for(int cv2=0; cv2<9; cv2++)

{

if(tabla[cv][cv2]==0)

if(cv2==0)

{

cout << osz << " ";

}

else

{

cout << " ";

}

if(tabla[cv][cv2]==1)

if(cv2==0)

{

cout << osz << " X ";

}

else

{

cout << "X ";

}

if(tabla[cv][cv2]==2)

if(cv2==0)

{

cout << osz << " O ";

}

else

{

cout << "O ";

}

}

cout << " ";

}

}

void ujjatek::priorki()

{

for(int cv=0; cv<9; cv++)

{

for(int cv2=0; cv2<9; cv2++)

{

cout << prior(cv,cv2) << " ";

}

cout << " ";

}

}

void ujjatek::priornul()

{

prior();

for(int cv=0; cv<9; cv++)

{

for(int cv2=0; cv2<9; cv2++)

{

prior(cv,cv2,0);

}

}

}

int ujjatek::ellenrak()

{

int maxy=0, maxx=0, maxo=-1;

for(int cv=0; cv<9; cv++)

{

for(int cv2=0; cv2<9; cv2++)

{

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

if(maxo<prior(cv,cv2))

{

maxo=prior(cv,cv2);

maxy=cv;

maxx=cv2;

}

}

}

}

tabla[maxy][maxx]=2;

if(ujjatek::WinsGame4(maxy,maxx)==1)

return 1;

return 0;

}

void ujjatek::DoMove()

{

int i, j, cv, cv2, Player=2, muveveg=1;

for(cv=0;cv<9;cv++)

for(cv2=0;cv2<9;cv2++)

{

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=2;

if(ujjatek::WinsGame2(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+20);

}

tabla[cv][cv2]=0;

}

else

prior(cv,cv2,-1);

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=1;

if(ujjatek::WinsGame2(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+9);

}

tabla[cv][cv2]=0;

}

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=2;

if(ujjatek::WinsGame(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+3);

}

tabla[cv][cv2]=0;

}

else

prior(cv,cv2,-1);

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=1;

if(ujjatek::WinsGame(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+4);

}

tabla[cv][cv2]=0;

}

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=2;

if(ujjatek::WinsGame3(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+1);

}

tabla[cv][cv2]=0;

}

else

prior(cv,cv2,-1);

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=1;

if(ujjatek::WinsGame3(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+2);

}

tabla[cv][cv2]=0;

}

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=2;

if(ujjatek::WinsGame4(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+21);

}

tabla[cv][cv2]=0;

}

else

prior(cv,cv2,-1);

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=1;

if(ujjatek::WinsGame4(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+20);

}

tabla[cv][cv2]=0;

}

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=2;

if(ujjatek::WinsGame5(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+1);

}

tabla[cv][cv2]=0;

}

else

prior(cv,cv2,-1);

if(tabla[cv][cv2]!=1 && tabla[cv][cv2]!=2)

{

tabla[cv][cv2]=1;

if(ujjatek::WinsGame5(cv, cv2)==1)

{

prior(cv,cv2,prior(cv,cv2)+1);

}

tabla[cv][cv2]=0;

}

}

}

int ujjatek::WinsGame(int i0, int j0)

{

int i, j;

i = i0;

j = j0-3;

if(j < 0)

j = 0;

while((j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i][j+1] == tabla[i0][j0]) && (tabla[i][j+2] == tabla[i0][j0]) && (tabla[i][j+3] == tabla[i0][j0]))

return 1;

j++;

}

j = j0;

i = i0-3;

if(i < 0)

i = 0;

while(i<=i0)

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j] == tabla[i0][j0]) && (tabla[i+2][j] == tabla[i0][j0]) && (tabla[i+3][j] == tabla[i0][j0]))

return 1;

i++;

}

j = j0-3;

i = i0-3;

while(i<0 || j<0)

{

j++;

i++;

}

while((i <= i0) && (j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j+1] == tabla[i0][j0]) && (tabla[i+2][j+2] == tabla[i0][j0]) && (tabla[i+3][j+3] == tabla[i0][j0]))

return 1;

j++;

i++;

}

j = j0+3;

i = i0-3;

if(i<0)

i=0;

while(j<0 || i<0)

{

j--;

i++;

}

while((i <= i0) && (j >= j0) && (j >= 3))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j-1] == tabla[i0][j0]) && (tabla[i+2][j-2] == tabla[i0][j0]) && (tabla[i+3][j-3] == tabla[i0][j0]))

return 1;

j--;

i++;

}

return 0;

}

int ujjatek::WinsGame2(int i0, int j0)

{

int i, j;

i = i0;

j = j0-3;

if(j < 0)

j = 0;

while((j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i][j+1] == tabla[i0][j0]) && (tabla[i][j+2] == tabla[i0][j0]) && (tabla[i][j+3] == tabla[i0][j0]))

return 1;

j++;

}

j = j0;

i = i0-3;

if(i < 0)

i = 0;

while((i <= i0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j] == tabla[i0][j0]) && (tabla[i+2][j] == tabla[i0][j0]) && (tabla[i+3][j] == tabla[i0][j0]))

return 1;

i++;

}

j = j0-3;

i = i0-3;

while(j<0 || i<0)

{

i++;

j++;

}

while((i <= i0) && (j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j+1] == tabla[i0][j0]) && (tabla[i+2][j+2] == tabla[i0][j0]) && (tabla[i+3][j+3] == tabla[i0][j0]))

return 1;

j++;

i++;

}

j = j0+3;

i = i0-3;

while(i<0)

{

i++;

j--;

}

while((i <= i0) && (j >= j0) && (j >= 3))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j-1] == tabla[i0][j0]) && (tabla[i+2][j-2] == tabla[i0][j0]) && (tabla[i+3][j-3] == tabla[i0][j0]))

return 1;

j--;

i++;

}

return 0;

}

int ujjatek::WinsGame4(int i0, int j0)

{

int i, j;

i = i0;

j = j0-4;

if(j < 0)

j = 0;

while((j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i][j+1] == tabla[i0][j0]) && (tabla[i][j+2] == tabla[i0][j0]) && (tabla[i][j+3] == tabla[i0][j0]) && (tabla[i][j+4] == tabla[i0][j0]))

return 1;

j++;

}

j = j0;

i = i0-4;

if(i < 0)

i = 0;

while((i <= i0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j] == tabla[i0][j0]) && (tabla[i+2][j] == tabla[i0][j0]) && (tabla[i+3][j] == tabla[i0][j0]) && (tabla[i+4][j] == tabla[i0][j0]))

return 1;

i++;

}

j = j0-4;

i = i0-4;

while(i<0 || j<0)

{

i++;

j++;

}

*if(i<0) i=0; if(j<0) j=0;

while((i <= i0) && (j <= j0)) //jobbra le átlósan kijön-e

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j+1] == tabla[i0][j0]) && (tabla[i+2][j+2] == tabla[i0][j0]) && (tabla[i+3][j+3] == tabla[i0][j0]) && (tabla[i+4][j+4] == tabla[i0][j0]))

return 1;

j++;

i++;

}

j = j0+4;

i = i0-4;

while(i<0)

{

i++;

j--;

}

while((i <= i0) && (j >= j0) && (j >= 4))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j-1] == tabla[i0][j0]) && (tabla[i+2][j-2] == tabla[i0][j0]) && (tabla[i+3][j-3] == tabla[i0][j0]) && (tabla[i+4][j-4] == tabla[i0][j0]))

return 1;

j--;

i++;

}

return 0;

}

int ujjatek::WinsGame3(int i0, int j0)

{

int i, j;

i = i0;

j = j0-2;

if(j < 0)

j = 0;

while((j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i][j+1] == tabla[i0][j0]) && (tabla[i][j+2] == tabla[i0][j0]))

return 1;

j++;

}

j = j0;

i = i0-2;

if(i < 0)

i = 0;

while((i <= i0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j] == tabla[i0][j0]) && (tabla[i+2][j] == tabla[i0][j0]))

return 1;

i++;

}

j = j0-2;

i = i0-2;

while(i<0 || j<0)

{

i++;

j++;

}

while((i <= i0) && (j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j+1] == tabla[i0][j0]) && (tabla[i+2][j+2] == tabla[i0][j0]))

return 1;

j++;

i++;

}

j = j0+2;

i = i0-2;

while(j<0 || i<0)

{

i++;

j--;

}

while((i <= i0) && (j >= j0) && (j>=2))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j-1] == tabla[i0][j0]) && (tabla[i+2][j-2] == tabla[i0][j0]))

return 1;

j--;

i++;

}

return 0;

}

int ujjatek::WinsGame5(int i0, int j0)

{

int i, j;

i = i0;

j = j0-1;

if(j < 0)

j = 0;

while((j <= j0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i][j+1] == tabla[i0][j0]))

return 1;

j++;

}

j = j0;

i = i0-1;

if(i < 0)

i = 0;

while((i <= i0))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j] == tabla[i0][j0]))

return 1;

i++;

}

j = j0-1;

i = i0-1;

while(i<0 || j<0)

{

i++;

j++;

}

while((i <= i0) && (i <= 9) && (j <= j0) && (j <= 9))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j+1] == tabla[i0][j0]))

return 1;

j++;

i++;

}

j = j0+1; //if(i<0) i=0;

i = i0-1;

while(i<0)

{

j--;

i++;

}

while((i <= i0) && (i <= 9) && (j >= j0) && (j >= 1))

{

if((tabla[i][j] == tabla[i0][j0]) && (tabla[i+1][j-1] == tabla[i0][j0]))

return 1;

j--;

i++;

}

return 0;

}

#include <string>

#include <vector>

#include "Array.h"

class ujjatek

{

public:

ujjatek();

ujjatek operator+();

void startjatek();

void tablaki();

void priorki();

void priornul();

void DoMove();

int WinsGame(int i0,int j0);

int WinsGame2(int i0,int j0);

int WinsGame3(int i0,int j0);

int WinsGame4(int i0,int j0);

int WinsGame5(int i0,int j0);

int ellenrak();

private:

int x1;

int y1;

int tabla[15][15];

};