C++ :: Aufgabe #39
2 Lösungen
4 Gewinnt für die Konsole
Anfänger - C++
von Gustl
- 05.01.2013 um 16:57 Uhr
Es soll 4 Gewinnt für die Konsole programmiert werden.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
Lösungen:
#include <iostream>
#include <conio.h>
#include <array>
#include <vector>
#include <windows.h>
#include <cassert>
namespace con
{
enum Color
{
BLACK, //schwarz
BLUEBLACK, //dunkelblau
DARKGREEN, //dunkelgruen
TEAL, //blaugruen
DARKRED, //dunkelrot
PURPLE, //lila
OCHER, //ocker
LIGHTGREY, //hellgrau
GREY, //dunkelgrau
BLUE, //blau
GREEN, //gruen
LIGHTBLUE, //hellblau
RED, //rot
MAGENTA, //magenta
YELLOW, //gelb
WHITE //weiss
};
enum Key
{
ARROW_UP = 72,
ARROW_DOWN = 80,
ARROW_LEFT = 75,
ARROW_RIGHT = 77,
ESCAPE = 27,
SPACE = 32,
ENTF = 83,
ENTER = 13,
BACK = 8,
TAB = 9
};
inline void gotoxy(int Y, int X)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.Y = Y;
pos.X = X;
SetConsoleCursorPosition(hCon, pos);
}
inline void color(const int COLOR)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), COLOR);
}
template<typename T>
inline void print(const int& Ypos, const int& Xpos, const T& s, int c = WHITE)
{
assert(Ypos >= 0 && Xpos >= 0);
gotoxy(Ypos, Xpos);
color(c);
std::cout << s;
color(WHITE);
}
inline void blinking_cursor(bool on)
{
CONSOLE_CURSOR_INFO inf;
inf.dwSize = 15;
if(!on) inf.bVisible = false;
else inf.bVisible = true;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&inf);
}
}
const int SPIELFELD_HOEHE = 6;
const int SPIELFELD_BREITE = 7;
typedef const std::array<std::array<int, SPIELFELD_BREITE>, SPIELFELD_HOEHE> constFeldTyp;
typedef std::array<std::array<int, SPIELFELD_BREITE>, SPIELFELD_HOEHE> feldTyp;
struct Pfeil
{
int Ypos, Xpos, positionsWert; //positionswert gleich wert der x-achse
Pfeil() : Ypos(20), Xpos(26), positionsWert(0) {}
void operator++()
{
if(Xpos < 44 && Xpos > 25)
{
ausgeben(true); //alten Pfeil loeschen
Xpos += 3;
ausgeben(false); //neuen malen
++positionsWert; //wir sind jetzt bei spielfeldMatrix[hoehe][++psw]
}
}
void operator--() //naja alles wie bei ++ nur andersrum
{
if(Xpos > 28)
{
ausgeben(true);
Xpos -= 3;
ausgeben(false);
--positionsWert;
}
}
void ausgeben(bool leeren)
{
con::print(Ypos, Xpos, leeren? ' ' : '^');
con::print(Ypos+1, Xpos, leeren? ' ' : '|');
}
};
void gebeSpielfeldAus()
{
con::gotoxy(1, 1);
std::cout <<
"\n\n\n\n\n\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n"
"\t\t\t| | | | | | | |\n"
"\t\t\t|--|--|--|--|--|--|--|\n";
}
void aktualisiereSpielfeld(int spieler, int hoehe, int position)
{
if(spieler == 1)
con::print(18-(hoehe*2), position, 'X', con::RED);
else
con::print(18-(hoehe*2), position, 'O', con::GREEN);
}
bool checkeHorizontalUndVertikal(constFeldTyp& spielfeldMatrix, bool vertikal)
{
for(int check = 1; check <= 2; ++check)
for(int i = 0; i < (vertikal? 7 : 6); ++i)
{
int anzahlGleicher = 0;
for(int j = 0; j < (vertikal? 6 : 7); ++j)
if(spielfeldMatrix[(vertikal? j : i)][(vertikal? i : j)] == check)
{
if(++anzahlGleicher == 4)
return true;
}
else
anzahlGleicher = 0;
}
return false;
}
bool checkeDiagonal(constFeldTyp& spielfeldMatrix, bool linksZuRechts)
{
for(int check = 1; check <= 2; ++check)
{
int maxHoehe[] = { 5, 5, 4, 3 };
for(int i = 0; i <= 3; ++i)
{
int anzahlGleicher = 0;
int j = 6-i;
if(linksZuRechts)
j = i;
for(int k = 0; k <= maxHoehe[i]; ++k)
{
if(spielfeldMatrix[k][j] == check)
{
if(++anzahlGleicher == 4)
return true;
}
else
anzahlGleicher = 0;
if(linksZuRechts)
++j;
else
--j;
}
}
}
return false;
}
bool checkeDiagonalExtra(constFeldTyp& spielfeldMatrix, bool linksZuRechts)
{
for(int k = 1; k <= 2; ++k)
{
for(int check = 1; check <= 2; ++check)
{
int anzahlGleicher = 0;
int j = 6;
if(linksZuRechts)
j = 0;
for(int i = k; i <= 5; ++i)
{
if(spielfeldMatrix[i][j] == check)
{
if(++anzahlGleicher == 4)
return true;
}
else
anzahlGleicher = 0;
if(linksZuRechts)
++j;
else
--j;
}
}
}
return false;
}
bool geloest(constFeldTyp& spielfeldMatrix)
{
return checkeHorizontalUndVertikal(spielfeldMatrix, true) ||
checkeHorizontalUndVertikal(spielfeldMatrix, false) ||
checkeDiagonal(spielfeldMatrix, true) ||
checkeDiagonal(spielfeldMatrix, false) ||
checkeDiagonalExtra(spielfeldMatrix, true) ||
checkeDiagonalExtra(spielfeldMatrix, false);
}
bool unentschieden(constFeldTyp& spielfeldMatrix)
{
for(int i = 0; i < 6; ++i)
for(int j = 0; j < 7; ++j)
if(spielfeldMatrix[i][j] == 0) //wenns irgendwo ein leeres feld gibt
return false; //kann man noch spielen
return true;
}
void bewegePfeil(Pfeil& p, char eingabe)
{
if(eingabe == con::ARROW_RIGHT || eingabe == 'd')
++p;
else if(eingabe == con::ARROW_LEFT || eingabe == 'a')
--p;
}
bool spielEnde(constFeldTyp& spielfeldMatrix)
{
if(geloest(spielfeldMatrix))
{
con::print(12, 60, "hat gewonnen!!", con::GREEN);
return true;
}
if(unentschieden(spielfeldMatrix))
{
con::print(12, 60, "setzte den letzten", con::YELLOW);
con::print(13, 60, "Stein zum ", con::YELLOW);
con::print(14, 60, "Unentschieden!", con::YELLOW);
return true;
}
return false;
}
int main()
{
feldTyp spielfeldMatrix = {{{{0}}}};
con::blinking_cursor(false);
con::color(con::WHITE);
Pfeil pfeil; //zeichnet schonmal einen
pfeil.ausgeben(false);
gebeSpielfeldAus();
enum
{
SPIELER_1,
SPIELER_2
};
bool aktuellerSpieler = SPIELER_1;
do
{
con::print(12, 50, "Spieler ");
std::cout << int(aktuellerSpieler)+1; //false = 0, 0 + 1 = 1
char eingabe;
do
{
eingabe = getch();
if(eingabe == con::ESCAPE)
return 0;
bewegePfeil(pfeil, eingabe);
}
while(eingabe != con::ENTER && eingabe != con::SPACE);
int hoehe = 0; //wird errechnet aus der position des pfeils und dem inhalt des arrays
for(int i = 0; i < SPIELFELD_HOEHE; ++i) //laeuft von der pfeilposition an einmal nach oben durch
if(spielfeldMatrix[i][pfeil.positionsWert] != 0)//und wenn da schon was ist, muss das naechte objekt darueber
++hoehe;
if(hoehe < SPIELFELD_HOEHE)
spielfeldMatrix[hoehe][pfeil.positionsWert] = (aktuellerSpieler == 0? 1 : 2);
else //es wird gar nix gesetzt und
continue; //kein Spielerwechsel
aktualisiereSpielfeld(aktuellerSpieler, hoehe, pfeil.Xpos); //uerbtraegt den Inhalt des Arrays aufs Spielfeld
aktuellerSpieler ^= 1; //wechselt den Spieler
} while(!spielEnde(spielfeldMatrix));
std::cin.get();
}
Man kann zwar zwischen Player vs Player und Player vs Computer auswählen, aber der Computer hat keine KI, sondern Random zwischen 1-7.
Bestimmt keine elegante Lösung, aber das war meine damals. :)
main.cpp
C-Code
viergewinnt.cpp
C-Code
viergewinnt.h
C-Code
Bestimmt keine elegante Lösung, aber das war meine damals. :)
main.cpp
#include <iostream>
using namespace std;
#include "viergewinnt.h"
int main(int argc, char *argv[])
{ viergewinnt spiel;
int wahl, wahlpc;
spiel.matrix();
cout<<" Player vs Player? - 1"<<endl<<" Player vs Computer? - 2 ";
cin>>wahlpc;
switch(wahlpc)
{
case 1: while (spiel.win() != 1)
{
if(spiel.nextP()) { spiel.setFW(12); cout<<endl<<" Spieler 1 (1-7): ";}
else {spiel.setFW(10);cout<<endl<<" Spieler 2 (1-7): ";}
cin>>wahl;
system("cls");
if(spiel.nextP())spiel.setP1(wahl);
else spiel.setP2(wahl);
spiel.matrix();
}
if(spiel.win() == 1)if(spiel.nextP()) {spiel.setFW(10); cout<<endl<<endl<<" Spieler 2";spiel.setFW(9);cout<<" WIN!";}
else { spiel.setFW(12);cout<<endl<<endl<<" Spieler 1";spiel.setFW(9);cout<<" WIN!";}
break;
case 2: while (spiel.win() != 1)
{
if(spiel.nextP()) { spiel.setFW(12); cout<<endl<<" Spieler 1 (1-7): ";}
else {spiel.setFW(10);cout<<endl<<" Comp 2 (1-7): ";}
if(spiel.nextP())cin>>wahl;
system("cls");
if(spiel.nextP())spiel.setP1(wahl);
else spiel.setP2(spiel.zugPC());
spiel.matrix();
}
if(spiel.win() == 1)if(spiel.nextP()) {spiel.setFW(10); cout<<endl<<endl<<" Computer";spiel.setFW(9);cout<<" WIN!";}
else { spiel.setFW(12);cout<<endl<<endl<<" Spieler 1";spiel.setFW(9);cout<<" WIN!";}
break;
}
spiel.ruecksetzten();
system("PAUSE>NUL");
return EXIT_SUCCESS;
}
viergewinnt.cpp
#include <iostream>
#include "viergewinnt.h"
#include <windows.h>
#include <math.h>
using namespace std;
viergewinnt::viergewinnt()
{ s=0;
for(int i=0; i<7; i++)
for(int i2=0; i2<5; i2++)
p[i][i2]=0;
}
void viergewinnt::ruecksetzten()
{ s=0;
for(int i=0; i<7; i++)
for(int i2=0; i2<5; i2++)
p[i][i2]=0;
}
bool viergewinnt::nextP()
{
if(s==0)return true;
else return false;
}
void viergewinnt::setP1(int wahl)
{ if(wahl >=1 && wahl <=7)
{
switch(wahl)
{
case 1:if (p[0][0]==0){p[0][0]=1;s=1;}
else if(p[0][1]==0){p[0][1]=1;s=1;}
else if(p[0][2]==0){p[0][2]=1;s=1;}
else if(p[0][3]==0){p[0][3]=1;s=1;}
else if(p[0][4]==0){p[0][4]=1;s=1;}break;
case 2:if (p[1][0]==0){p[1][0]=1;s=1;}
else if(p[1][1]==0){p[1][1]=1;s=1;}
else if(p[1][2]==0){p[1][2]=1;s=1;}
else if(p[1][3]==0){p[1][3]=1;s=1;}
else if(p[1][4]==0){p[1][4]=1;s=1;}break;
case 3:if (p[2][0]==0){p[2][0]=1;s=1;}
else if(p[2][1]==0){p[2][1]=1;s=1;}
else if(p[2][2]==0){p[2][2]=1;s=1;}
else if(p[2][3]==0){p[2][3]=1;s=1;}
else if(p[2][4]==0){p[2][4]=1;s=1;}break;
case 4:if (p[3][0]==0){p[3][0]=1;s=1;}
else if(p[3][1]==0){p[3][1]=1;s=1;}
else if(p[3][2]==0){p[3][2]=1;s=1;}
else if(p[3][3]==0){p[3][3]=1;s=1;}
else if(p[3][4]==0){p[3][4]=1;s=1;}break;
case 5:if (p[4][0]==0){p[4][0]=1;s=1;}
else if(p[4][1]==0){p[4][1]=1;s=1;}
else if(p[4][2]==0){p[4][2]=1;s=1;}
else if(p[4][3]==0){p[4][3]=1;s=1;}
else if(p[4][4]==0){p[4][4]=1;s=1;}break;
case 6:if (p[5][0]==0){p[5][0]=1;s=1;}
else if(p[5][1]==0){p[5][1]=1;s=1;}
else if(p[5][2]==0){p[5][2]=1;s=1;}
else if(p[5][3]==0){p[5][3]=1;s=1;}
else if(p[5][4]==0){p[5][4]=1;s=1;}break;
case 7:if (p[6][0]==0){p[6][0]=1;s=1;}
else if(p[6][1]==0){p[6][1]=1;s=1;}
else if(p[6][2]==0){p[6][2]=1;s=1;}
else if(p[6][3]==0){p[6][3]=1;s=1;}
else if(p[6][4]==0){p[6][4]=1;s=1;}break;
}
}
}
void viergewinnt::setP2(int wahl)
{
if(wahl >=1 && wahl <=7)
{
switch(wahl)
{
case 1:if (p[0][0]==0){p[0][0]=2;s=0;}
else if(p[0][1]==0){p[0][1]=2;s=0;}
else if(p[0][2]==0){p[0][2]=2;s=0;}
else if(p[0][3]==0){p[0][3]=2;s=0;}
else if(p[0][4]==0){p[0][4]=2;s=0;}break;
case 2:if (p[1][0]==0){p[1][0]=2;s=0;}
else if(p[1][1]==0){p[1][1]=2;s=0;}
else if(p[1][2]==0){p[1][2]=2;s=0;}
else if(p[1][3]==0){p[1][3]=2;s=0;}
else if(p[1][4]==0){p[1][4]=2;s=0;}break;
case 3:if (p[2][0]==0){p[2][0]=2;s=0;}
else if(p[2][1]==0){p[2][1]=2;s=0;}
else if(p[2][2]==0){p[2][2]=2;s=0;}
else if(p[2][3]==0){p[2][3]=2;s=0;}
else if(p[2][4]==0){p[2][4]=2;s=0;}break;
case 4:if (p[3][0]==0){p[3][0]=2;s=0;}
else if(p[3][1]==0){p[3][1]=2;s=0;}
else if(p[3][2]==0){p[3][2]=2;s=0;}
else if(p[3][3]==0){p[3][3]=2;s=0;}
else if(p[3][4]==0){p[3][4]=2;s=0;}break;
case 5:if (p[4][0]==0){p[4][0]=2;s=0;}
else if(p[4][1]==0){p[4][1]=2;s=0;}
else if(p[4][2]==0){p[4][2]=2;s=0;}
else if(p[4][3]==0){p[4][3]=2;s=0;}
else if(p[4][4]==0){p[4][4]=2;s=0;}break;
case 6:if (p[5][0]==0){p[5][0]=2;s=0;}
else if(p[5][1]==0){p[5][1]=2;s=0;}
else if(p[5][2]==0){p[5][2]=2;s=0;}
else if(p[5][3]==0){p[5][3]=2;s=0;}
else if(p[5][4]==0){p[5][4]=2;s=0;}break;
case 7:if (p[6][0]==0){p[6][0]=2;s=0;}
else if(p[6][1]==0){p[6][1]=2;s=0;}
else if(p[6][2]==0){p[6][2]=2;s=0;}
else if(p[6][3]==0){p[6][3]=2;s=0;}
else if(p[6][4]==0){p[6][4]=2;s=0;}break;
}
}
}
char viergewinnt::getm(int x, int y)
{ if(p[x][y] == 2){setFW(10);return 219;}
if(p[x][y] == 1){setFW(12);return 219;}
if(p[x][y] == 0)return ' ';
}
void viergewinnt::setFW(int farbe)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), farbe);
}
void viergewinnt::matrix()
{ setFW(15);
cout<<endl<<" 1 2 3 4 5 6 7 "<<endl;
//cout<<" "<<(char)201<<(char)205<<(char)205<<(char)205<<"+---+---+---+---+---+---+"<<endl;
for(int i=4; i>=0; i--)
{
cout<<" "<<(char)204<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)206<<(char)205<<(char)205<<(char)205<<(char)185<<endl;
cout<<" "<<(char)186<<" ";setFW(15);
cout<<getm(0,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(1,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(2,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(3,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(4,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(5,i);
setFW(15);cout<<" "<<(char)186<<" ";
cout<<getm(6,i);
setFW(15);cout<<" "<<(char)186<<" "<<endl;
}
cout<<" "<<(char)200<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)202<<(char)205<<(char)205<<(char)205<<(char)188<<endl;
//cout<<" +---+---+---+---+---+---+---+"<<endl;
}
int viergewinnt::win()
{ for(int i=1; i<3; i++)
{if(p[0][0] == i && p[0][1] == i && p[0][2] == i && p[0][3] == i)return 1;
if(p[0][1] == i && p[0][2] == i && p[0][3] == i && p[0][4] == i)return 1;
if(p[1][0] == i && p[1][1] == i && p[1][2] == i && p[1][3] == i)return 1;
if(p[1][1] == i && p[1][2] == i && p[1][3] == i && p[1][4] == i)return 1;
if(p[2][0] == i && p[2][1] == i && p[2][2] == i && p[2][3] == i)return 1;
if(p[2][1] == i && p[2][2] == i && p[2][3] == i && p[2][4] == i)return 1;
if(p[3][0] == i && p[3][1] == i && p[3][2] == i && p[3][3] == i)return 1;
if(p[3][1] == i && p[3][2] == i && p[3][3] == i && p[3][4] == i)return 1;
if(p[4][0] == i && p[4][1] == i && p[4][2] == i && p[4][3] == i)return 1;
if(p[4][1] == i && p[4][2] == i && p[4][3] == i && p[4][4] == i)return 1;
if(p[5][0] == i && p[5][1] == i && p[5][2] == i && p[5][3] == i)return 1;
if(p[5][1] == i && p[5][2] == i && p[5][3] == i && p[5][4] == i)return 1;
if(p[6][0] == i && p[6][1] == i && p[6][2] == i && p[6][3] == i)return 1;
if(p[6][1] == i && p[6][2] == i && p[6][3] == i && p[6][4] == i)return 1;
if(p[0][0] == i && p[1][0] == i && p[2][0] == i && p[3][0] == i)return 1;
if(p[1][0] == i && p[2][0] == i && p[3][0] == i && p[4][0] == i)return 1;
if(p[2][0] == i && p[3][0] == i && p[4][0] == i && p[5][0] == i)return 1;
if(p[3][0] == i && p[4][0] == i && p[5][0] == i && p[6][0] == i)return 1;
if(p[0][1] == i && p[1][1] == i && p[2][1] == i && p[3][1] == i)return 1;
if(p[1][1] == i && p[2][1] == i && p[3][1] == i && p[4][1] == i)return 1;
if(p[2][1] == i && p[3][1] == i && p[4][1] == i && p[5][1] == i)return 1;
if(p[3][1] == i && p[4][1] == i && p[5][1] == i && p[6][1] == i)return 1;
if(p[0][2] == i && p[1][2] == i && p[2][2] == i && p[3][2] == i)return 1;
if(p[1][2] == i && p[2][2] == i && p[3][2] == i && p[4][2] == i)return 1;
if(p[2][2] == i && p[3][2] == i && p[4][2] == i && p[5][2] == i)return 1;
if(p[3][2] == i && p[4][2] == i && p[5][2] == i && p[6][2] == i)return 1;
if(p[0][3] == i && p[1][3] == i && p[2][3] == i && p[3][3] == i)return 1;
if(p[1][3] == i && p[2][3] == i && p[3][3] == i && p[4][3] == i)return 1;
if(p[2][3] == i && p[3][3] == i && p[4][3] == i && p[5][3] == i)return 1;
if(p[3][3] == i && p[4][3] == i && p[5][3] == i && p[6][3] == i)return 1;
if(p[0][4] == i && p[1][4] == i && p[2][4] == i && p[3][4] == i)return 1;
if(p[1][4] == i && p[2][4] == i && p[3][4] == i && p[4][4] == i)return 1;
if(p[2][4] == i && p[3][4] == i && p[4][4] == i && p[5][4] == i)return 1;
if(p[3][4] == i && p[4][4] == i && p[5][4] == i && p[6][4] == i)return 1;
if(p[0][0] == i && p[1][1] == i && p[2][2] == i && p[3][3] == i)return 1;
if(p[0][1] == i && p[1][2] == i && p[2][3] == i && p[3][4] == i)return 1;
if(p[1][1] == i && p[2][2] == i && p[3][3] == i && p[4][4] == i)return 1;
if(p[1][0] == i && p[2][1] == i && p[3][2] == i && p[4][3] == i)return 1;
if(p[2][1] == i && p[3][2] == i && p[4][3] == i && p[5][4] == i)return 1;
if(p[2][0] == i && p[3][1] == i && p[4][2] == i && p[5][3] == i)return 1;
if(p[3][1] == i && p[4][2] == i && p[5][3] == i && p[6][4] == i)return 1;
if(p[3][0] == i && p[4][1] == i && p[5][2] == i && p[6][3] == i)return 1;
if(p[6][1] == i && p[5][2] == i && p[4][3] == i && p[3][4] == i)return 1;
if(p[6][0] == i && p[5][1] == i && p[4][2] == i && p[3][3] == i)return 1;
if(p[5][1] == i && p[4][2] == i && p[3][3] == i && p[2][4] == i)return 1;
if(p[5][0] == i && p[4][1] == i && p[3][2] == i && p[2][3] == i)return 1;
if(p[4][1] == i && p[3][2] == i && p[2][3] == i && p[1][4] == i)return 1;
if(p[4][0] == i && p[3][1] == i && p[2][2] == i && p[1][3] == i)return 1;
if(p[3][1] == i && p[2][2] == i && p[1][3] == i && p[0][4] == i)return 1;
if(p[3][0] == i && p[2][1] == i && p[1][2] == i && p[0][3] == i)return 1;
}
}
int viergewinnt::zugPC()
{ srand (time(NULL));
return rand()%7;
}viergewinnt.h
class viergewinnt
{ int p[7][5];
int s;
int chance;
public:
viergewinnt();
void setP1(int wahl);
void setP2(int wahl);
void matrix();
char getm(int x, int y);
void ruecksetzten();
bool nextP();
int win();
void setFW(int farbe);
int zugPC();
};