Autor Wątek: Prosta gra kółko krzyżyk - problemy  (Przeczytany 964 razy)

Offline Xenox93

  • Użytkownik

# Grudzień 27, 2010, 15:21:26
Witam  ;)

Wiem, że mój błąd jest banalny, ale c++ uczę się na własną rękę, a w szkole mamy dopiero pętle więc będę wdzięczny za wyrozumiałość :) Wcześniej robiłem co nie co w WinApi no i podstawy w directx 9  :D

Tak sobie pomyślałem, że może nie warto rzucać się motyką na tworzenie gier 3d skoro jeszcze nie wiem czy potrafię zrobić grę w konsoli.
Ja zawsze mam problem z jednym w głowie zawsze powstaje mi dużo pomysłów na coś jak mogę zrobić, ale jak przychodzi co do czego to nie potrafię tego napisać(no może napisać to jeszcze napiszę, ale mam dużo błędów, a nic nie da rady zrobić).

Tak więc pomyślałem, że najłatwiejsze to pewnie kółko krzyżyk, no bo załóżmy tworzę sobie zmienne (ja postanowiłem tablicę) i podmieniam ich wartość na * lub x  :D Ale powstał problem, otóż zrobiłem tablicę: tablica[3][3] i zamiast wypisywać mi wszystko od 1 do 9 to wypisuje mi tylko od 1 do 3, bądź 1,4 i 7  ;) Nie wiem co może być źle przecież zrobiłem wszystko zgodnie ze składnią c++.
Nie wiem czy w dobrym miejscu na forum umieściłem post, ale bardziej problem pasował mi pod ten temat  :)

Poniżej znajdziecie kod:
#include <iostream>
#include <cstdio>
using namespace std;

int tablica[3][3];
//=====================================================================================
void plansza_ogolna()
{

tablica[0][0]=1;
tablica[1][0]=2;
tablica[2][0]=3;
tablica[0][1]=4;
tablica[1][1]=5;
tablica[2][1]=6;
tablica[0][2]=7;
tablica[1][2]=8;
tablica[2][2]=9;

int i=0;
while(i<3)
{
cout << tablica[i][0];

i++;
}
cout << endl;
while(i<3)
{
cout << tablica[i][1] << endl;

i++;
}

cout << endl;

while(i<3)
{
cout << tablica[i][2] << endl;

i++;
}
}

void plansza()
{
int i=0;
while(i<3)
{
cout << tablica[i][0];

i++;
}
cout << endl;
while(i<3)
{
cout << tablica[i][1] << endl;

i++;
}

cout << endl;

while(i<3)
{
cout << tablica[i][2] << endl;

i++;
}
}

//=====================================================================================
void game()
{
system("cls");
int wybor;
char znak;
char comp;

cout << "Jaki chcesz miec znak * czy x ?: ";
cin >> znak;

if(znak=='*')
{
comp='x';
}
else
{
comp='*';
}

system("cls");

plansza_ogolna();

for(int i=0; i<3; i++)
{
if(i>0)
{
system("cls");
plansza();
}

cout << "Podaj w ktorym polu chcesz wstawic "<< znak << " : ";
cin >> wybor;

cin.ignore();
getchar();

if(wybor==1)
{
tablica[0][0]=znak;
if(tablica[1][1]=znak)
{
tablica[0][2]=comp;
}else
tablica[1][1]=comp;
}
else if(wybor==2)
{
tablica[1][0]=znak;
if(tablica[1][1]=znak)
{
tablica[0][2]=comp;
}else
tablica[1][1]=comp;
}
else if(wybor==3)
{
tablica[2][0]=znak;
if(tablica[1][1]=znak)
{
tablica[0][2]=comp;
}else
tablica[1][1]=comp;
}
else if(wybor==4)
{
tablica[0][1]=znak;
if(tablica[1][1]=znak)
{
tablica[0][2]=comp;
}else
tablica[1][1]=comp;
}
else if(wybor==5)
{
tablica[1][1]=znak;
}
else if(wybor==6)
{
tablica[2][1]=znak;
}
else if(wybor==7)
{
tablica[0][2]=znak;
}
else if(wybor==8)
{
tablica[1][2]=znak;
}
else if(wybor==9)
{
tablica[2][2]=znak;
}

}
}

//=====================================================================================
void menu()
{
int wybor;

cout << "================Menu==================" << endl;
cout << "| 1.| Nowa gra                       |" << endl;
cout << "--------------------------------------" << endl;
cout << "| 2.| Wyjscie                        |" << endl;
cout << "======================================" << endl;
cout << "Co chcesz zrobic: ";
cin >> wybor;

if(wybor==1)
{
game();
}
else
if(wybor==2)
{
system("cls");
cout << "Dziekuje za skorzystanie z mojej gry !!!" << endl;
}
}
//=====================================================================================
int main()
{
menu();

cin.ignore();
getchar();
return 0;
}

Z góry dziękuje za wyrozumiałość i pomoc  :D

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Avaj

  • Użytkownik

# Grudzień 27, 2010, 15:38:21
nie zerujesz "i" między kolejnymi przebiegami pętli, przez co kolejne while'e są olewane kompletnie. Poza tym, do takich rzeczy lepiej użyć pętli FOR.

Offline Karol

  • Użytkownik

# Grudzień 27, 2010, 15:52:32
I wygodniej zrobić pętlę w pętli.

Offline Xenox93

  • Użytkownik

# Grudzień 27, 2010, 16:32:41
ok... dzięki  ;)

Też tak myślałem, że ustawienie int i=0; tylko w jednym miejscu spowoduje błąd, ale wtedy kompilator wyświetlał błędy, i w sumie nie pomyślałem, że można zrobić to pętlą for  ;D

Ale nie wiem czemu mam jeszcze jeden błąd, bo jak pyta się program co chcesz zmienić(gdzie ma znaleźć się ten znak to wyświetla kosmiczne liczby  ;D). Nie wiem co jest źle, bo przecież zamiast jakiś tak liczb powinien wyświetlić tylko zamiast 2 to znak * lub x  :)

Ja jeszcze się pomęczę, ale nie wiem co z tego wyjdzie  :D

A i jeszcze jedno pytanie, czy jest coś takiego aby te liczby były większe no i przypominały chociaż w małym stopniu tabelę ??

Będę wdzięczny za pomoc  ;)

Edit:
Kiedy program się pyta które pole chcemy zmienić to ja wpisuje np. 1, a znak wybieram jako "x", tak więc, wynik to:
12023
41206
78120

Czy to jest normalne?? A może program zamiast znaku wstawia liczbę z tablicy SCSII(czy jakoś tak  ;D). Jak myślicie?
« Ostatnia zmiana: Grudzień 27, 2010, 16:59:28 wysłana przez Xenox93 »

Offline Xenox93

  • Użytkownik

# Grudzień 27, 2010, 21:44:22
Problem rozwiązany i wszystko teraz jest w jak najlepszym pożądku  ;)

Uważam temat za zamknięty  :D