Skocz do zawartości
kisiel96

[Pascal] Kółko i krzyżyk

Rekomendowane odpowiedzi

Witam ;]

Jako, że mój kolega napisał prostą grę w C++, a ja jestem ambitny to nie chciałem być gorszy :P W związku z tym, że ostatnio w szkole na kole informatycznym mieliśmy zalążek Pascala, postanowiłem w tym języku napisać swoją grę. Aby się poduczyć skorzystałem z tego:

http://turbopascal.skryptoteka.pl/

Nooo i to tyle wstępu. Teraz moje wypociny (kod jest trochę... Nieprzemyślany delikatnie mówiąc - tzn. zacząłem pisać grę zanim przeczytałem powyższy kurs i tego... No i zrobiłem parę błędów, które naprawie w kolejnych wersjach gry (między innymi chodzi mi o budowę kodu: oprę go o procedury). Jednak teraz potrzebuję kogoś kto powie mi dlaczego nie wyświetla ten kod zawartości pól (tzn. znaków X, O i nr pola). Aaa... I tego... Wieeem... Gra dla dwóch osób nie jest zbyt ambitna, ale już mam zarys w głowie sztucznej inteligencji dla "komputera") :P :

 

 

program tictactoe;		uses crt;		var pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9:string[3];			idgracza,gdziepostawic,ktopierwszy:shortint;			i:integer;		begin 			clrscr;			(*Zmienne*)			pole1:='1';			pole2:='2';			pole3:='3';			pole4:='4';			pole5:='5';			pole6:='6';			pole7:='7';			pole8:='8';			pole9:='9';			idgracza:=0;			gdziepostawic:=0;			(*Komunikaty*)			writeln('Zagraj w Kolko i krzyzyk');			writeln('Mapa i numery pol:');			writeln('1|2|3');			writeln('-|-|-');			writeln('4|5|6');			writeln('-|-|-');			writeln('7|8|9');			(*Losowanie pierwszego ruchu*)			randomize;			ktopierwszy:=random(1);				if ktopierwszy = 0 then					begin (*Petla - wprowadzenie znaku*)						for i:=1 to 9 do							begin (*Sprawdzenie wygranej*)                                if ((pole1 = 'X') and (pole2 = 'X') and (pole3 = 'X')) or								((pole4 = 'X') and (pole5 = 'X') and (pole6 = 'X')) or								((pole7 = 'X') and (pole8 = 'X') and (pole9 = 'X')) or								((pole1 = 'X') and (pole4 = 'X') and (pole7 = 'X')) or								((pole2 = 'X') and (pole5 = 'X') and (pole8 = 'X')) or 								((pole3 = 'X') and (pole6 = 'X') and (pole9 = 'X')) or								((pole1 = 'X') and (pole5 = 'X') and (pole9 = 'X')) or 								((pole3 = 'X') and (pole5 = 'X') and (pole7 = 'X')) then									begin										write('Wygral gracz X');										readln;										halt;									end;								if idgracza = 0 then									begin (*Wprowadzenie znaku*)										writeln('Podaj nr pola, gdzie chcesz postawic X');										read(gdziepostawic);											if gdziepostawic = 1 then											pole1:='X';											if gdziepostawic = 2 then											pole2:='X';											if gdziepostawic = 3 then											pole3:='X';											if gdziepostawic = 4 then											pole4:='X';											if gdziepostawic = 5 then											pole5:='X';											if gdziepostawic = 6 then											pole6:='X';											if gdziepostawic = 7 then											pole7:='X';											if gdziepostawic = 8 then											pole8:='X';											if gdziepostawic = 9 then											pole9:='X';										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										writeln(pole1,'|',pole2,'|',pole3);										writeln('-|-|-');										writeln(pole4,'|',pole5,'|',pole6);										writeln('-|-|-');										writeln(pole7,'|',pole8,'|',pole9);										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										{readln;}										idgracza:=1									end;								if idgracza = 1 then									begin (*Wprowadzenie znaku*)										writeln('Podaj nr pola, gdzie chcesz postawic O');										read(gdziepostawic);											if gdziepostawic = 1 then											pole1:='O';											if gdziepostawic = 2 then											pole2:='O';											if gdziepostawic = 3 then											pole3:='O';											if gdziepostawic = 4 then											pole4:='O';											if gdziepostawic = 5 then											pole5:='O';											if gdziepostawic = 6 then											pole6:='O';											if gdziepostawic = 7 then											pole7:='O';											if gdziepostawic = 8 then											pole8:='O';											if gdziepostawic = 9 then											pole9:='O';										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										writeln(pole1,'|',pole2,'|',pole3);										writeln('-|-|-');										writeln(pole4,'|',pole5,'|',pole6);										writeln('-|-|-');										writeln(pole7,'|',pole8,'|',pole9);										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										{readln;}										idgracza:=0									end;							end;					end;				if ktopierwszy = 1 then					begin (*Pętla - wprowadzenie znaku*)						for i:=1 to 9 do 							begin (*Sprawdzenie wygranej*)								if ((pole1 = 'O') and (pole2 = 'O') and (pole3 = 'O')) or								((pole4 = 'O') and (pole5 = 'O') and (pole6 = 'O')) or 								((pole7 = 'O') and (pole8 = 'O') and (pole9 = 'O')) or 								((pole1 = 'O') and (pole4 = 'O') and (pole7 = 'O')) or 								((pole2 = 'O') and (pole5 = 'O') and (pole8 = 'O')) or 								((pole3 = 'O') and (pole6 = 'O') and (pole9 = 'O')) or								((pole1 = 'O') and (pole5 = 'O') and (pole9 = 'O')) or 								((pole3 = 'O') and (pole5 = 'O') and (pole7 = 'O')) then									begin										write('Wygral gracz O');										readln;										halt;									end;								if idgracza = 0 then									begin (*Wprowadzenie znaku*)										writeln('Podaj nr pola, gdzie chcesz postawic O');										read(gdziepostawic);											if gdziepostawic = 1 then											pole1:='O';											if gdziepostawic = 2 then											pole2:='O';											if gdziepostawic = 3 then											pole3:='O';											if gdziepostawic = 4 then											pole4:='O';											if gdziepostawic = 5 then											pole5:='O';											if gdziepostawic = 6 then											pole6:='O';											if gdziepostawic = 7 then											pole7:='O';											if gdziepostawic = 8 then											pole8:='O';											if gdziepostawic = 9 then											pole9:='O';										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										writeln(pole1,'|',pole2,'|',pole3);										writeln('-|-|-');										writeln(pole4,'|',pole5,'|',pole6);										writeln('-|-|-');										writeln(pole7,'|',pole8,'|',pole9);										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										{readln;}										idgracza:=1									end;								if idgracza = 1 then									begin (*Wprowadzenie znaku*)										writeln('Podaj nr pola, gdzie chcesz postawic X');										read(gdziepostawic);											if gdziepostawic = 1 then											pole1:='X';											if gdziepostawic = 2 then											pole2:='X';											if gdziepostawic = 3 then											pole3:='X';											if gdziepostawic = 4 then											pole4:='X';											if gdziepostawic = 5 then											pole5:='X';											if gdziepostawic = 6 then											pole6:='X';											if gdziepostawic = 7 then											pole7:='X';											if gdziepostawic = 8 then											pole8:='X';											if gdziepostawic = 9 then											pole9:='X';										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										writeln(pole1,'|',pole2,'|',pole3);										writeln('-|-|-');										writeln(pole4,'|',pole5,'|',pole6);										writeln('-|-|-');										writeln(pole7,'|',pole8,'|',pole9);										read(pole1,pole2,pole3,pole4,pole5,pole6,pole7,pole8,pole9);										{readln;}										idgracza:=0									end;							end;					end;		end.

 

 

I tego... Na razie jest to wersja, która będzie działać w wierszu polecenia :P

 

Noo i teraz proszę o pomoc, gdyż moja gra nie działa :P A ja nie wiem dlaczego :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiem, wiem - napisałem - kod jest mało przemyślany i ogólnie do d... Ale chodzi mi o to, przynajmniej uruchomić to co już napisałem, a potem "przeportować" na wersję optymalniejszą. Ogólnie gra ma dwa błędy: nie wyświetla zawartości pół (zmienne pole1 do pole9) oraz nie sprawdza kto wygrał (pewnie jest to związane z poprzednim błędem)

 

Edit: Po za tym tablice tylko skróciły by kod tylko w miejscu "gdziepostawic" - bo w sprawdzaniu wygranej nic mi to nie da a w rysowaniu planszy też wiele to nie zmieni. Natomiast kotwice i procedury zamierzam zastosować w kolejnej wersji. Na razie potrzebuję by ta gra po prostu działała...

Edytowane przez kisiel96

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...