C++ :: Aufgabe #39 :: Lösung #2

2 Lösungen Lösungen öffentlich
#39

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
vote_ok
von Gustl (6560 Punkte) - 05.01.2013 um 17:45 Uhr
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
Quellcode ausblenden C-Code
#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
Quellcode ausblenden C-Code
#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
Quellcode ausblenden C-Code
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();    
};

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2108849

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.