Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.

#1
Big Grin  [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
I oto koniec. Pierwsza taka z prawdziwego zdarzenia gra konsolowa(Pierwszą umieściłem na forum, ale to była taka 'pseudo gra').
Kółko krzyżyk LOL
Jednak żeby utrudnić sobie sprawę, zrobiłem kilka bajerów...
Przede wszystkim to gracz decyduje jak wielka ma być plansza. Może mieć nawet 100 pól.
Sprawdzanie czy ktoś wygrał czy nie przebiega także trochę inaczej niż w większości kodach tego typu.
Funkcja szuka pól o danym X i Y. Dzięki czemu nie potrzebne jest niewiadomo ile kombinacji typu if (1==znak && ... || 2 znak........).

Plik gra.cpp - http://wklej.org/id/39757/
Plik plansza.cpp - http://wklej.org/id/39759/
Plik plansza.h - http://wklej.org/id/39761/

Będę bardzo wdzięczny za wszystkie uwagi, wskazówki. Niestety nie mam wśród kolegów innego programisty, który by mógł czytać moje kody. Piszę sam i nie wiele osób je widzi.
Trochę mnie to ogranicza, bo nikt nie krytykuje moich prac, chociaż wiem, że nie są bez wad.
 System operacyjny: windows_vista Przeglądarka: firefox
#2
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
1. Powiedz mi, co się stanie, jeśli jako wymiar podam np. 13?
2. Dlaczego w pliku .h masz definicję konstruktora?
3. Dlaczego tablica pole ma 150x3, a nie np. 140 albo 160? (Od razu powiem: dlaczego to nie jest dynamicznie zrobione?)
4. Po co w metodzie rysuj_plansze() podajesz rozmiar w parametrze, skoro przekazujesz tę informację przez konstruktor?
5. Co się stanie, jeśli jako numer pola, czy wielkość planszy podam np. "qwerty"?
6. Nie sądzisz, że kolejne numerowanie pól jest niewygodne? Nie lepiej zrobić to na zasadzie współrzędnych jak np. w szachach? a5, c3 itd?
7. Dlaczego używasz zmiennych globalnych? Może dać graczom wybór symbolu, albo w ogóle zrobić grę wieloosobową?
To kilka komentarzy na szybko, nie analizowałem całości, bo trochę zajęty jestem. Ale na początek wystarczy.
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#3
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
(16.01.2009, 00:11)wiesniak napisał(a): 1. Powiedz mi, co się stanie, jeśli jako wymiar podam np. 13?
Program zaprotestuje i poprosi o poprawne wpisanie rozmiaru.
Cytat:2. Dlaczego w pliku .h masz definicję konstruktora?
A czemu nie Szczerbol
Cytat:3. Dlaczego tablica pole ma 150x3, a nie np. 140 albo 160? (Od razu powiem: dlaczego to nie jest dynamicznie zrobione?)
Przymierzałem się żeby to zrobić, ale w końcu odpuściłem. Ale prawda, że to lepsze rozwiązanie by było.
Cytat:4. Po co w metodzie rysuj_plansze() podajesz rozmiar w parametrze, skoro przekazujesz tę informację przez konstruktor?
Moje niedopatrzenie. Kod modyfikowałem kilka razy i zapomniałem najprawdopodobniej tą funkcje przerobić Oczy
Cytat:5. Co się stanie, jeśli jako numer pola, czy wielkość planszy podam np. "qwerty"?
Pętla się zapętli Szczerbol Nie przewidziałem takiej możliwości w kodzie... :\
Cytat:6. Nie sądzisz, że kolejne numerowanie pól jest niewygodne? Nie lepiej zrobić to na zasadzie współrzędnych jak np. w szachach? a5, c3 itd?
Czy ja wiem...Moim zdaniem lepiej jest podać liczbę... Bardziej przejrzyście, dla laika
Cytat:7. Dlaczego używasz zmiennych globalnych? Może dać graczom wybór symbolu, albo w ogóle zrobić grę wieloosobową?
Teoretycznie można by było zrobić wybieranie symbolu, ale trzeba pamiętać, że to tylko kółko krzyżyk.... ;-) Gdyby gracz sobie wybierał symbol to to nie byłoby już kółko krzyżyk :-[
Gra wieloosobowa? A to niby nie jest?;-P Gra dwóch graczy przeciwko sobie.
Cytat:To kilka komentarzy na szybko, nie analizowałem całości, bo trochę zajęty jestem. Ale na początek wystarczy.
Dzięki za wszystkie uwagi :-)
 System operacyjny: windows_vista Przeglądarka: firefox
#4
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
1. Ah, masz rację, przegapiłem for.
3. Zrób to, warto :-) To też wiąże się z punktem 6. Nie odpalałem programu, nie sprawdzałem jak wygląda plansza, ale ja jakoś wolę podawa pole jako c7, a nie 46 :-) Kwestia gustu.
7. Hm, a co jeśli ja chcę zaczynać i chcę mieć kółko?
Wiem, że się czepiam, ale im więcej takich bzdurek przerabiasz jak zabezpieczenie programu przed wprowadzeniem "qwerty", tym lepiej dla Ciebie. Poza tym nie ma co się bać dynamicznej alokacji pamięci - to jest bardzo często wykorzystywane i bardzo przydatne.
Jak znajdę czas, to przejrzę resztę kodu dokładniej.
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#5
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
Do sprawdzenia, czy podano dobry rozmiar, użyłbym pętli do...while. Tak samo tam, gdzie masz wstawianie znaku też użyłbym pętli while.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#6
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
Brawo, bardzo "oszczędnie" napisałeś Wesoły nie ma tysięcy linijek kodu... :D.
----------------------------------
Nie chcę zakładać nowego tematu więc się zapytam:
W moim "KiK'u" chciałem zrobić sztuczną "nie inteligencję..." :D użyłem więc funkcji rand() do losowania pola, w które komputer ma wstawić znak X. Wszystko fajnie, tyle, że czasem nadpisują się 2 znaki X lub komputer nadpisuje O... :D Nie mam jakoś pomysłu jak to zmienić....
[Obrazek: 9989.jpg]
Nowy hit przemysłu gier: http://yfrog.com/16hitvqj
#define private public //beware, classes, I'm coming! LOL
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
To zależy gdzie i jak masz zapisaną informację czy w polu jest już wpisany znak.
Ja to zrobiłem tak jak zrobiłem, czyli pętla for - dopóki gracz nie wpiszę takiego pola, w którym nie ma znaku (jest liczba).
 System operacyjny: windows_vista Przeglądarka: firefox
#8
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
Mam zapisane w tablicy jeśli o to chodzi.
string t[9] = {"1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"};
A potem po prostu przypisuje:
komp = rand() % 9 + 1;
switch(komp)
{
case 1:
t[0]="X";
break;
case 2:
t[1]="X";
break;
case 3:
t[2]="X";
break;
case 4:
t[3]="X";
break;
case 5:
t[4]="X";
break;
case 6:
t[5]="X";
break;
case 7:
t[6]="X";
break;
case 8:
t[7]="X";
break;
case 9:
t[8]="X";
break;
}
[Obrazek: 9989.jpg]
Nowy hit przemysłu gier: http://yfrog.com/16hitvqj
#define private public //beware, classes, I'm coming! LOL
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#9
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
No to umieść to w pętli
Cytat:komp = rand() % 9 + 1;
oraz
umieść ifa, który sprawdza czy t[komp] == X (lub O).
Jeśli prawda (czyli już zajęte pole) - powtarza pętle, jeśli nie - break, i "idzie" do switcha
 System operacyjny: windows_vista Przeglądarka: firefox
#10
RE: [C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.
Przy czymś takim windows wyrzuca komunikat o błędzie.
while(1)
{
komp = rand() % 9 + 1;
if((t[komp] == "X" ) || (t[komp] == "O"))
break;
}
[Obrazek: 9989.jpg]
Nowy hit przemysłu gier: http://yfrog.com/16hitvqj
#define private public //beware, classes, I'm coming! LOL
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
prawdziwe gry w kółko krzyżyk z komputeremkółko i krzyżyk gra z komputerem c++kółko i krzyżyk duża planszakołko i krzyżyk na dużej planszykolko i krzyżyk duza planszakolko i krzyzyk wielkiegra w kółko i krzyżyk do 5 c++ gra kółko i krzyżyk na 5 c++gra kołko i krzyżyk na bardzo dużej planszyduże kółko i krzyżyk

Podobne wątki ([C++] "Wielkie" kółko krzyżyk. Wasze opinie, wskazówki.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  AI do gry "Kółko i krzyżyk". Dreamer1x6xX 1 9281 22.05.2015, 08:34
Ostatni post: Szachista
  Kółko i krzyżyk w VBA malinka6656 6 5676 21.01.2014, 18:26
Ostatni post: malinka6656
  [C++]Kółko i krzyżyk, gracz kontra komputer Dregorio 8 7176 18.09.2013, 20:03
Ostatni post: Dregorio

Skocz do: