Permalänk
Medlem

Programmering Sänka Skepp

Hej!
Håller på med ett arbete där jag ska göra ett sänka skepp program i kommandotolken helt enkelt. 2 dimensionellt alltså en rad på 15 platser.

Har fastnat i delen där jag ska låta spelare 1 och spelare 2 "bomba" respektive motståndares skepp som de har satt ut på en bestämd antal. Alltså har spelare 1 och spelare 2 fått bestämma i början av spelet hur många skepp som ska ingå, men max platserna är alltid 15 st.

Har försökt men kommer inte på hur jag ska gå vidare, jag har säkert gjort något fel i koden. Men här kommer den:

Citat:

#include <iostream>
#include <string>

using namespace std;

int main()
{
setlocale(LC_ALL,"swedish");

int antalSkepp = 0;
int skeppBradeSpelare1 [15];
int skeppBradeSpelare2 [15];
int pointsSpelare1 = 0;
int pointsSpelare2 = 0;
int bomb1 = 0;
int bomb2 = 0;
int placeringSpelare1 [15];
int placeringSpelare2 [15];

string name1 = " ";
string name2 = " ";

cout<<"Välkommna till sänka skepp!"<<endl;

cout<<"Hur många skepp vill ni ha? ";
cin>>antalSkepp;

cout<<endl;

cout<<"Mata in namnet för spelare 1:"<<endl;

cout<<"Spelare 1: ";
cin.ignore();
getline(cin, name1);
cout<<endl;

cout<<"Mata in namnet för spelare 2:"<<endl;

cout<<"Spelare 2: ";
cin.ignore();
getline(cin, name2);
cout<<endl;

cout<<endl;
cout<<name1<<" placera ut dina "<<antalSkepp<<" skepp nu OBS! Max 15 platser:"<<endl;

for(int i=0; i<antalSkepp; i++)
{
cout<<"Mata in placering: ";
cin>>placeringSpelare1[15];
cout<<endl;

if (placeringSpelare1[15]<1 || placeringSpelare1[15]>15)
{
cout<<"Det finns endast 1-15 platser, var god börja om!"<<endl;
i--;
}
//skeppBradeSpelare1[15] == placeringSpelare1[15];
}

cout<<endl;
cout<<"Nu är det "<<name2<<"s tur att placera ut sina skepp OBS! Max 15 platser"<<endl;
cout<<endl;

for(int k=0; k<antalSkepp; k++)
{
cout<<"Mata in placering: ";
cin>>placeringSpelare2[15];
cout<<endl;

if(placeringSpelare2[15]<1 || placeringSpelare2[15]>15)
{
cout<<"Det finns endast 1-15 platser, var god börja om!"<<endl;
k--;
}
//skeppBradeSpelare2[15] == placeringSpelare2[15];
}

while(pointsSpelare1<=15 || pointsSpelare2<=15)
{
cout<<name2<<"s tur! Skriv en siffra mellan 1-15"<<endl;
cin>>bomb2;

if(placeringSpelare1[15]==bomb1)
{
cout<<"Träff!"<<endl;
pointsSpelare1++;
}
else
{
cout<<"Miss!"<<endl;
}

cout<<name1<<"s tur! Skriv en siffra mellan 1-15"<<endl;
cin>>bomb1;

if(placeringSpelare2[15]==bomb2)
{
cout<<"Träff!"<<endl;
}
else
{
cout<<"Miss!"<<endl;
}
}

cout<<pointsSpelare1<<endl;

return 0;
}

Hoppas det är någon som kan berätta hur jag ska gå tillväga för att komma vidare

MVH

Visa signatur

-Gigabyte 990FXA-UD3
-AMD Phenom II X3 720
-4GB Corsair XMS3 DDR3 @ 1333MHz
-2GB 6950 klockad till 6970
-550W Corsair nätagg

Permalänk
Medlem
Skrivet av Banken92:

Hej!
Håller på med ett arbete där jag ska göra ett sänka skepp program i kommandotolken helt enkelt. 2 dimensionellt alltså en rad på 15 platser.

Har fastnat i delen där jag ska låta spelare 1 och spelare 2 "bomba" respektive motståndares skepp som de har satt ut på en bestämd antal. Alltså har spelare 1 och spelare 2 fått bestämma i början av spelet hur många skepp som ska ingå, men max platserna är alltid 15 st.

Har försökt men kommer inte på hur jag ska gå vidare, jag har säkert gjort något fel i koden. Men här kommer den:

Hoppas det är någon som kan berätta hur jag ska gå tillväga för att komma vidare

MVH

Nu är jag ingen expert på C++ men det borde inte vara ett problem...

Några fel jag ser på en gång:
* Det är en dimensionellt, inte två. (Liknelseexempel: Du har bara bredd. Du har inte höjd och bredd)
* Du hårdkodar position 15 i arrayen för varje gång man placerar ut ett skepp (vilket i sin tur borde göra att det krashar? eftersom arrayen har bara positionerna 0-14)
* Vid bombningen, spelarnas val används inte i bombningen.
* Du borde inte använda ett spelbräde OCH position per spelare. Du borde placera skeppen på vardera spelbräde.

Debugga programmet med breakpoints eller skriv ut värdena till konsolen, detta för att se hur arrayerna ser ut innan du börjar bombningen.
Då borde du kunna se varför det inte blir som du vill.

Säg att man får placera ut 3 skepp då borde ett troligt scenario för exempelvis "skeppBradeSpelare1" vara:

//Utskrift: ,X,,,X,,,,,,,X,,,
//Positioner: 1, 4, 11

X går inte att stoppa in i en array av int, men du kan använda ett tal som kännetecknar ett skepp. Eller göra om arrayen till en char-array istället.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Har fixat det. tråden kan tas bort

Visa signatur

-Gigabyte 990FXA-UD3
-AMD Phenom II X3 720
-4GB Corsair XMS3 DDR3 @ 1333MHz
-2GB 6950 klockad till 6970
-550W Corsair nätagg