Meddelande

Minska
No announcement yet.

Kortspel C++ (kortlek med array)

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Kortspel C++ (kortlek med array)

    Hejsan forumet!!!

    Ja jag sitter med C++. Håller på med en kortlek där EN array skall representera en kortlek. Kortleken går ut på att man skall blanda en kortlek och sedan skall max sex kort dras, tre till spelaren och tre till datorn. Bäst av tre gäller. Just nu sitter jag fast hur jag skall skapa en array just för kortleken. Koden nedan fungerar tills man kommer till card(); där kortleken skapas och skall föras in i arrayen som är tvådimensionell. När jag kör programmet "kraschar" själva programmeringsprogrammet. Varför gör den det och vad orsakar problemet? Testa så får ni se!
    Kan inte se vad fel är i koden iallafall. Har ni bättre förslag hur det skall genomföras är det välkommet.

    Spelet börjar med en huvudmeny där spelaren frågas om den vill börja spela sedan hoppar programmet vidare till funktionen card(); som skall skapa kortleken. Just nu har jag programmerat så att den skall skriva ut hela kortleken. Tanken är sedan att finna ett sätt att blanda kortleken via en rand funktion som skall kasta om arrayens positioner slumpmässigt.



    [kod]#include <iostream>
    #include <ctime>
    #include <string>
    #include <cstring>
    #include <vector>
    using namespace std;


    // Globala Variabler
    int deckofcards[4][13]; //Array kortlek
    int suits[4]; // Array för färg på korten
    int value[13]; // Array för kortens valörer
    int computer[3]; // array för spelarens dragna kort
    int player[3]; // array för datorns dragna kort
    int computercard;
    int playercard;
    int cardplayer;
    int cardcomputer;
    char answer;


    // Funktioner
    void startmeny();
    void cards();
    void playagain();



    int main(){

    int playerpoints;
    int computerpoints;
    int won = 0;
    int lost = 0;

    startmeny();
    cards();


    cout<< " |---------- ROUND 1 ----------| " <<endl;

    cout<< " Your card: " << player[1] <<endl;
    cout<< " Computer card: " << computercard <<endl;

    if(playercard > computercard){
    cout << " You Won !!! " <<endl;
    won++;
    cout << " You have won: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }

    else if (playercard < computercard){
    cout << " YOU LOST!!! " <<endl;
    lost++;
    cout << " You have won: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }

    else if (playerpoints == computerpoints){
    cout << " It's a Draw " <<endl;
    cout << " You have won: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }


    cout<< " |---------- RESULT ----------| " <<endl;
    if(playerpoints > computerpoints){
    cout << " YOU WON THE GAME!!! " <<endl;
    won;
    cout << " You have won: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }

    else if (playerpoints < computerpoints){
    cout << " YOU LOST THE GAME !!! " <<endl;
    lost;
    cout << " Du har vunnit: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }

    else if (playerpoints == computerpoints){
    cout << " THE GAME IS A DRAW !!! :S " <<endl;
    cout << " You have won: " << won << " times. " <<endl;
    cout << " You have lost: " << lost << " times. " <<endl;
    }

    playagain();


    cin.get();
    cin.ignore();

    }//main


    // FUNKTIONER
    void cards(){ // Skapa kortleken
    int x;
    int y;

    string suits[4];
    string value[13];
    string deckofcards[4][13]; // Arrayen "kortleken" skapas via suits och value

    suits[1] = "Clubs";
    suits[2] = "Diamonds";
    suits[3] = "Hearts";
    suits[4] = "Spades";

    value[1] = "2";
    value[2] = "3";
    value[3] = "4";
    value[4] = "5";
    value[5] = "6";
    value[6] = "7";
    value[7] = "8";
    value[8] = "9";
    value[9] = "10";
    value[10] = "Jack";
    value[11] = "Queen";
    value[12] = "King";
    value[13] = "Aces";

    for(x = 0 ; x < 4; x++){
    for(y = 0; y < 13; y++){
    deckofcards[x][y] = suits[x] + value[y]; // lägga in korten i ordning
    }
    }

    for(x = 0; x < 4; x++){
    for(y = 0; y < 13; y++){
    cout<< deckofcards[x][y] + ' ' <<endl;//skriva ut kortleken
    }
    }

    }


    void startmeny(){
    char answer;
    do{
    cout<< " THE CARDGAME! " <<endl;
    cout<< " Turn the cards and see if you win, best of three! " <<endl;
    cout<< " Do you want to play? (Y/N) " <<endl <<endl;
    cin>> answer;
    }while((answer != 'y') && (answer != 'Y'));
    }

    void playagain(){

    char playagain; // variabeln for val for spela igen
    cout<< " Want to play the game again? (Y/N) " <<endl;
    cin>> playagain; // variabeln for val for spela igen
    }[/kod]
    Last edited by @nders; 2014-02-26, 07:11. Anledning: fipplade in lite [kod]-taggar för läsbarhet

  • #2
    Cosmo pope skrev: Visa inlägg
    suits[1] = "Clubs";
    ...
    suits[4] = "Spades";

    value[1] = "2";
    ...
    value[13] = "Aces";
    Kan inte C++, men jag antar att arrayer som i de flesta andra språk indexeras från 0 till arraylängd-1 och inte 1 till arraylängd. dvs. suits[0] ... suits[3] och value[0] ... value[12]
    / Jojoxx

    "Always remember that you're unique and special, just like everyone else..."

    Kommentera


    • #3
      Ja.... Självklart!

      Kommentera

      Working...
      X