webForumDet fria alternativet

Kortspel C++ (kortlek med array)

2 svar · 1 984 visningar · startad av Cosmo pope

Cosmo popeMedlem sedan feb. 20142 inlägg
#1

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.

#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!!! :D " <<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
}
JojoxxMedlem sedan juni 20004 308 inlägg
#2

Cosmo pope skrev:

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]

Cosmo popeMedlem sedan feb. 20142 inlägg
#3

Ja.... Självklart!

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)