[C++] Blackjack problemz
Ska göra ett blackjack spel dock har jag fastnat nu... När man ska stanna så blir det endast en lång infinity loop som aldrig slutar. (sök efter "while(val == '2'){ ") så hittar ni det.
Sen vill jag också att spelaretot och banktot ska bli 0 när man stannar så man kan starta om spelet utan att starta om hela programmet.
/*
Black Jack
Oscar Martin
funktoner:
blanda()
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <regex>
#include <string>
#include <stdlib.h>
using namespace std;
//Förbered funktioner
/* Globala Variabler */
int kortlek[208];
int ordning[208];
int dKort=0;
int bank[5];
int spelare1[5];
char val;
// Funktioner
void slump();
void kortleken();
void start();
int delaut();
void startmeny();
char meny();
int main(){
int spelaretot=0;
int banktot=0;
int runda=0;
int brunda=0;
start();
val = meny();
do{
while(val == '1'){
//Dela ut korten till spelare och banken (ge endast 1 kort till banken)
spelare1[runda]=delaut();
dKort++;
if(runda == 0){
bank[runda]=delaut();
banktot=bank[runda]%100+banktot;
dKort++;
}
//Skriv ut Korten
cout << "=== KORT ===" << endl;
cout << "Du: " << spelare1[runda]%100 << endl;
if(runda == 0){ // Visa endast bankens totala första rundan.
cout << "Bank: " << bank[runda]%100 << endl;
}
spelaretot=spelare1[runda]%100+spelaretot;
cout << endl;
//Skriv ut det totala
cout << "=== TOTALT ===" << endl;
cout << "Du:" << spelaretot << endl;
if(runda == 0){ // Visa endast bankens totala första rundan.
cout << "Banken:" << banktot << endl;
}
//Kolla spelarens kort > 21 = tjock == 21 Vunnit
if(spelaretot > 21){
cout << "TJOCK!" << endl;
start();
val = meny();
}
else if(spelaretot == 21 && runda == 1){
cout << "==============" << endl;
cout << "==BLACK JACK==" << endl;
cout << "Du har Vunnit!" << endl;
cout << "==============" << endl;
start();
val = meny();
}
//Här gör vi så att spelaren kan fortsätta hitta eller stanna
cout << "Hit eller Stop? H:S" << endl;
cin >> val;
runda++;
}
while(val == '2'){
//Om spelaren stannar visa det totala och stanna spelet.
//Om runda är 0 och spelaretot är 0 så är inte spelet startat alltså vill
//spelaren avsluta programmet
if(runda == 0 && spelaretot == 0){
return 0;
}
while(brunda < 5 || banktot <= 16){
bank[runda]=delaut();
dKort++;
banktot=bank[runda]%100+banktot;
brunda++;
}
cout << endl;
cout << "=== TOTALT ===" << endl;
cout << "Du:" << spelaretot << endl;
cout << "Banken:" << banktot << endl;
}
getch();
cout << "DINMAMMA";
return 0;
}while(val != '3');
}// End main
/* Funktioner */
void slump(){
srand(time(0));
int temp;
ordning[0]=rand()%208;
for(int i=1; i < 208; i++){
temp=rand()%208-1;
for(int n=0; n < i; n++){
if(temp == ordning[n]){
temp=rand()%208-1;
}
else{
ordning[i]=temp;
}
}
}
}
void kortleken(){
int kort=0;
for(int antal=0; antal < 4; antal++){
// Hjärter
for(int h=antal*52; h <= 12+antal*52; h++){
kortlek[h]=101+kort;
kort++;
}
kort=0;
//Ruter
for(int r=13+antal*52; r <= 25+antal*52; r++){
kortlek[r]=201+kort;
kort++;
}
kort=0;
//Klöver
for(int k=26+antal*52; k <= 38+antal*52; k++){
kortlek[k]=301+kort;
kort++;
}
kort=0;
//Spader
for(int s=39+antal*52; s <= 51+antal*52; s++){
kortlek[s]=401+kort;
kort++;
}
kort=0;
}
}
void start(){
slump();
kortleken();
}
int delaut(){
return kortlek[ordning[dKort]];
}
char meny(){
char val;
cout << "----- BLACK JACK ------" << endl;
cout << "1 = Nytt spel" << endl;
cout << "2 = Avsluta Spel" << endl;
cin >> val;
return val;
}
ᕦ(ツ)ᕤ