Prawdziwe oblicze Informatyki. Tysiące linijek kodu i kompilatory które nigdy nie wybaczają.
Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post15 lip 2012, 16:18

http://pastebin.com/TmDVb2jt nie patrz na jakieś literówki, czy coś w tym stylu, chyba pogubiłem średniki tam, w pascalu nie pisałem od lat.

Nie ma czegoś takiego jak "goto niezbędne do działania programu", goto jest niezbędne do brickowania xD
Ja tylko dobrze radzę, goto to jest średnio dobry pomysł, wszystko da się rozwiązać jakąś pętlą.


Wiesz co, wybitnie mi się dziś nudzi, wyślij mi ten kod w całości jaki masz ja ci go przerobię tak, żeby nie było żadnych goto, żeby pokazać, że się da :P

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post15 lip 2012, 16:52

Jak chcesz - wyśle Ci pełną wersję tej gry. Jeszcze pokombinuje z rekordami.
Wyślij mi na PW Twój adres E-mail.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post18 lip 2012, 0:11

Tu masz stworzone parę takich "klocków", z których możesz złożyć tą grę, nie będę pisał wszystkiego za ciebie, bo wtedy się nie nauczysz ;)
Przepraszam, że tyle czasu mi się zeszło, okazało się, że jednak nagle zaczęło się dziać w moim nudnym życiu informatyka.

http://pastebin.com/GLYGcRkh


Jeżeli chcesz, żebym jeszcze coś napisał, bo nie wiesz jak, pytaj. Przedstawiłem jak zapisać pytania w tablicy rekordów oraz drogę to stworzenia procedury rysującej ramki, dokończenie jej można uznać za drobną pracę domową :3

Oryginalny kod był pisany strasznie "mechanicznie" i moim zdaniem nie nadawał się jako przykład do nauki, ale samo napisanie tej gry w sposób bardziej "właściwy" powinno dużo ci dać. Jak już złożysz grę z tych moich puzzli proponuję dodać jakiś edytor pytań zapisujący je do pliku, ale to już na samym końcu. Ta gra byłaby też dobrym sposobem do nauki programowania obiektowego, ale myślę, że nie wszystko na raz. W każdym razie powodzenia i jakby co służę pomocą.

//uznałem, że lepiej tu niż na PW, może kiedyś ktoś będzie szukał coś w tym rodzaju.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post18 lip 2012, 13:54

Dzięki, ale nie wiem czy zauważyłeś ale to wcale nie rozwiązuje mojego problemu, aby te pytania wylosować. Dołożyłem do twojego kodu jeszcze dwa pytania i nie wiem jak je teraz wylosować w tablicy sam spójrz:

Kod: Zaznacz cały

program Gra;
uses crt, dos;

Type 
   pytanie = record
      question, a, b, c, d : string;
          answer : char;
   End;

Var q : array [1..10] of pytanie;


Function pytaj(q : pytanie)  : boolean;
var odp : char;
begin

  writeln(q.question);
  writeln(q.a);
  writeln(q.b);
  writeln(q.c);
  writeln(q.d);
  readln (Odp);
  if odp = q.answer then
     pytaj := true
  else
     pytaj := false;    
end;  

 

BEGIN
Randomize; // URUCHAMIAM SKRYPT GENERATORA LOSOWEGO
Random (); // CHCĘ WYLOSOWAĆ PONIŻSZE PYTANIA ZNAJDUJĄCE SIĘ W TABLICY REKORDÓW I JAK MAM TO ZROBIĆ ?? Co trzeba wpisać w nawiasach Random ??
Begin
  q[1].question := 'Jaka pojemnosc ma dyskietka 5.25 cala (Podwojnej gestosci) ?';
  q[1].a :=  'A. 1.44MB';
  q[1].b :=  'B. 5.25MB';
  q[1].c :=  'C. 360Kb';        
  q[1].d :=  'D. 520Kb';
  q[1].answer := 'c';
  Clrscr;

  If pytaj(q[1]) = true then
writeln('Dobrze')
else
writeln('Zle') ;   
end;

Begin
  q[2].question := 'Ile to 2 + 2 ?';
  q[2].a :=  'A. 1';
  q[2].b :=  'B. 2';
  q[2].c :=  'C. 3';        
  q[2].d :=  'D. 4';
  q[2].answer := 'd';
  Clrscr;

  If pytaj(q[2]) = true then
writeln('Dobrze')
else
writeln('Zle') ; 
end;

Begin
  q[3].question := 'Ile to 3! ?';
  q[3].a :=  'A. 3';
  q[3].b :=  'B. 6';
  q[3].c :=  'C. 9';        
  q[3].d :=  'D. 12';
  q[3].answer := 'b';
  Clrscr;

  If pytaj(q[3]) = true then
writeln('Dobrze')
else
writeln('Zle') ; 
end;
END.
Ogólnie uważam że świetny pomysł z tym że można pytania umieścić w tablicy rekordów jako funkcja (Sam bym raczej na to nie wpadł), ale to nadal nie zmienia faktu że nie wiem jak wylosować te pytania. Instrukcję Goto będę jeszcze używał do powrotu do miejsca na planszy po zadaniu pytania (Nie mam zamiaru tego zmieniać). A jeśli chodzi o Obramowanie pola gry to w sumie nie pomyślałem że mogę dać to w procedurę - dlatego tak zrobię, ale to co napisałeś ta procedura o nazwie "kreska" nie bardzo się nada gdyż w nowej wersji mojej gry, obramowanie nie będzie złożone wyłącznie ze znaku "*" , tylko odpowiednio dla pozycji kursora ze znaków tablicy kodów ASCII. Tak więc wystarczy że fragment mojego programu (Odpowiadający za obramowanie) skopiuję do procedury, a później ją wywołam dwukrotnie i tym samym skrócę swój i tak długi już kod.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post18 lip 2012, 14:10

Według mnie te wszystkie if...else są strasznie zagmatwane. Spróbuję naskrobać coś podobnego i dam znać.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post18 lip 2012, 15:53

Kod: Zaznacz cały

program Gra;
uses crt, dos;

Type 
   pytanie = record
      question, a, b, c, d : string;
          answer : char;
   End;

Var q : array [1..10] of pytanie;


Function pytaj(q : pytanie)  : boolean;
var odp : char;
begin
  Clrscr;
  writeln(q.question);
  writeln(q.a);
  writeln(q.b);
  writeln(q.c);
  writeln(q.d);
  readln (Odp);
  if odp = q.answer then
     pytaj := true
  else
     pytaj := false;    
end;  

 
var punkty : integer;
BEGIN

  punkty :=0;
  Randomize; 
  



  q[1].question := 'Jaka pojemnosc ma dyskietka 5.25 cala (Podwojnej gestosci) ?';
  q[1].a :=  'A. 1.44MB';
  q[1].b :=  'B. 5.25MB';
  q[1].c :=  'C. 360Kb';        
  q[1].d :=  'D. 520Kb';
  q[1].answer := 'c';
  
  q[2].question := 'Ile to 2 + 2 ?';
  q[2].a :=  'A. 1';
  q[2].b :=  'B. 2';
  q[2].c :=  'C. 3';        
  q[2].d :=  'D. 4';
  q[2].answer := 'd';
  
  q[3].question := 'Ile to 3! ?';
  q[3].a :=  'A. 3';
  q[3].b :=  'B. 6';
  q[3].c :=  'C. 9';        
  q[3].d :=  'D. 12';
  q[3].answer := 'b';

  
  repeat
  
  If pytaj(q[(1+Random(3))]) = true then
     begin
	    inc(punkty);
	   writeln('Dobrze');
	   writeln(punkty);
	 end
  else
     writeln('Zle') ;   
	 
  until  punkty = 2 	 
  




END.

W językach programowania jest taka instytucja jak pętla, radzę się z tym zapoznać, bo daleko tak nie uciągniesz. Goto można nazwać bardzo prymitywną pętlą. Warunek zakończenia pętli dałem jakikolwiek, bo to i tak tylko dla przykładu.

I parę uwag:
-na co tyle begin endów? nie wciskaj ich wszędzie, potrzebne są kiedy chcesz kilka instrukcji zapisać jako jedną (np w if, albo pętli for)
-rób wcięcia w kodzie, bo zabłądzisz, dzięki temu widać, które instrukcje należą do którego bloku.

PS. Gadam o wcięciach, a sam dopiero zauważyłem jak mam krzywo. No nic, ale i tak rób :P

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post18 lip 2012, 16:16

Kurwełe, lolasher był szybszy :S
No ale jak już zrobiłem, to daję swoją wersję. Zawiera amazing efekty graficzne oraz wcięcia w kodzie!!!
Tylko trzeba podokurwiać więcej pytań, bo są bricki z losowaniem (dwa identyczne pod rząd, nigdy nie udało mi się wylosować #3, itp).

Kod: Zaznacz cały

program mafijny_quiz; uses crt, sysutils;

type
	tzapytanie = record
	tresc:string;
	odp1:string;
	odp2:string;
	odp3:string;
	odp4:string;
	odp_prawidlowa:integer;
end;

var
	pytanie:array [0..666] of tzapytanie;
	i:integer;
	liczba_pytan:integer;
	numer_pytania:integer;
	fakju:boolean;
	odpowiedz:char;
	dawaj_inne_pytanie:boolean;

begin
	//nakurwienie pytań
	//z pliku byłoby fajniej (chyba)
	with pytanie[0] do
	begin
		tresc:='Na jakiej częstotliwości nadawany jest Program I Polskiego Radia?';
		odp1:='224 kHz';
		odp2:='225 kHz';
		odp3:='227 kHz';
		odp4:='6095 kHz';
		odp_prawidlowa:=2;
	end;
	with pytanie[1] do
	begin
		tresc:='W której z wymienionych lokalizacji znajdowała się najmocniejsza radiostacja na świecie?';
		odp1:='Allouis';
		odp2:='Droitwich';
		odp3:='Konstantynów';
		odp4:='Taldom';
		odp_prawidlowa:=3;
	end;
	with pytanie[2] do 
	begin
		tresc:='Która firma produkuje karty graficzne bez sterowników?';
		odp1:='3dfx';
		odp2:='AMD';
		odp3:='Matrox';
		odp4:='NVIDIA';
		odp_prawidlowa:=2;
	end;


	//UWAGA, ZAGROŻENIE ZDROWIA LUB ŻYCIA
	//żeby losowanie nie miało bricków, trzeba dokurwić więcej pytań

	//można jeszcze sprawdzić ile w ogóle jest nakurwionych pytań
	for i:=0 to 666 do
	begin
		if pytanie[i].tresc='' then
		begin
			liczba_pytan:=i-1;
			break;
		end;
	end;

	//komora mieszania jest pusta, następuje zwolnienie blokady
	randomize;

	//i rozpoczynamy nakurwianie
	fakju:=false;	
	repeat
		dawaj_inne_pytanie:=false;
		textcolor(3); for i:=1 to 80 do write('*');
		textcolor(8); writeln('WYJŚCIE: wduś ESC');
		textcolor(7); writeln;

		numer_pytania:=random(liczba_pytan);
		
		writeln(pytanie[numer_pytania].tresc);
		writeln('1. '+pytanie[numer_pytania].odp1);
		writeln('2. '+pytanie[numer_pytania].odp2);
		writeln('3. '+pytanie[numer_pytania].odp3);
		writeln('4. '+pytanie[numer_pytania].odp4);
		writeln;
		write('Wstukaj odpowiedź: ');
		
		repeat
			odpowiedz:=readkey;
			case odpowiedz of
				'1':i:=1;
				'2':i:=2;
				'3':i:=3;
				'4':i:=4;
				#27:begin clrscr; halt; end;
			end;
			if i=pytanie[numer_pytania].odp_prawidlowa then 
			begin
				gotoxy(0,wherey); clreol;
				textcolor(10+128);
				writeln('DOBRZE!!!!!');
				delay(5000);
				gotoxy(0,wherey-1); clreol;
				textcolor(10);
				writeln('DOBRZE!!!!!');
				textcolor(7);
				dawaj_inne_pytanie:=true;
			end
			else begin
				textcolor(4+128);
				gotoxy(0,wherey);
				writeln('TY TŁUMOKU, POPRAWNA ODPOWIEDŹ TO NR '+inttostr(pytanie[numer_pytania].odp_prawidlowa)+' !!!!!!!!!!!!!');
				delay(5000);
				gotoxy(0,wherey-1);
				textcolor(4);
				writeln('TY TŁUMOKU, POPRAWNA ODPOWIEDŹ TO NR '+inttostr(pytanie[numer_pytania].odp_prawidlowa)+' !!!!!!!!!!!!!');
				textcolor(7);
				dawaj_inne_pytanie:=true;
			end;
		until dawaj_inne_pytanie=true;
	until fakju=true;
end.
/me popiera używanie pętli zamiast goto
There is no cloud. It's just someone else's computer.

Awatar użytkownika

funcek

Zasłużony użytkownik
Posty: 1916
Rejestracja: 06 lut 2011, 12:36
Lokalizacja: Bolesławiec
    Windows XP Opera

Post18 lip 2012, 16:23

begin
tresc:='Która firma produkuje karty graficzne bez sterowników?';
odp1:='3dfx';
odp2:='AMD';
odp3:='Matrox';
odp4:='NVIDIA';
odp_prawidlowa:=2;
end;
DOBRZE!!!!!!!!1111
Spoiler
Leniwy #1; Lenovo ThinkPad T460s:
Intel Core i5-6300U @ 2.4 GHz || 8 GB RAM DDR4 || Intel HD Graphics 520 || 14" FHD || SSD Lexar 250GB NVMe || Windows 10 Pro
Leniwy #2; Lenovo ThinkPad T460s:
Intel Core i5-6300U @ 2.4 GHz || 8 GB RAM DDR4 || Intel HD Graphics 520 || 14" FHD || GoodRam S400U 128GB m.2242 || ChromeOS Brunch
Chrumek; HP Chromebook 11a G8 EE:
AMD A4-9120C @ 1.1 GHz - 2.4 GHz || 4 GB RAM DDR4 || AMD Radeon R3 || 11.6" 1366x768 || 32GB eMMC || ChromeOS
Piec:
MSI B450M PRO-VDH MAX || AMD Ryzen 3 3200G @ 3.6 GHz || 2x8GB RAM DDR4 Crucial 3000 MHz CL15 || Radeon Vega 8 || PNY 500GB M.2 PCIe NVMe || KRUX Trek || SilentiumPC SPC197 450W || Windows 10 Pro
Piec #2; Lenovo Thinkcentre M93p SFF:
Intel Core i7-4770 @ 3.40 GHz || 20GB DDR3 (2x8 + 2x2) || Intel HD Graphics 4600 || Western Digital Blue 320GB 7200RPM || Windows 8.1 Pro x64 + MX Linux 21.2.1
Serwer - obecnie brak

Retro:
eMachines E510 :
Intel Celeron M560 2.13GHz || 2 GB RAM DDR2 || grafika: tak || 15.4" || HDD 80GB (słynny talerzak z serwera złamanego na kolanie :D ) || Windows XP SP3
IBM ThinkPad T23:
Intel Pentium III-M Tualatin @ 1.13GHz || 256MB RAM SDRAM || S3 SuperSavage/IXC || 14.1" 1024x768 || HDD 60GB ATA || Windows 2000 Pro SP4
Dell Latitude CPx H500GT:
Intel Pentium III-E 500MHz || 256MB RAM SDRAM || ATi RAGE Mobility-M1 AGP X2 || 14.1" 1024x768" || HDD 30GB 5400RPM || Windows Me
Bulbulator Czasoprzestrzeni, bliźniak Masturbatora Czasu; Sony Vaio PCG-N505SN:
Mobile Pentium II 400MHz || 128MB SŁONY-RAM || NeoMagic MagicGraph 256AV 2.5 MB || 10.4" 1024x768 || HDD 20GB 5400RPM || Windows 98 SE
Masturbator czasu; Sony Vaio PCG-505G:
Pentium MMX 233MHz || 32 MB SŁONY-RAM || NeoMagic MagicGraph 128XD 2 MB || 10.4" 800x600 || HDD 6 GB 4200RPM, głośny jak szlag || Windows 98 SE || 1998r. :)

Samsung Galaxy S21 5G 8/128GB, Samsung Galaxy Z Flip 3 8/128GB

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post18 lip 2012, 17:09

pc.qwerty pisze:Kurwełe, lolasher był szybszy :S
Ale za to ja nie znałem bardzo fajnej instrukcji "with", człowiek się uczy całe życie.

Nie mogę się dopatrzeć co u ciebie w kodzie jest źle z losowaniem, ale u mnie (chyba) działa dobrze na trzech pytaniach.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post18 lip 2012, 17:17

NOWA WERSJA NAKURWIACZA!!!!!!!!
Ficzery: dokurwienie procedur, odbrickowane losowanie dwóch identycznych pytań pod rząd, zablokowanie klawiszy innych niż 1, 2, 3, 4, esc przy odpowiadaniu... i wciąż ani jednego goto :trollface:

Kod: Zaznacz cały

program mafijny_quiz; uses crt, sysutils;

type
	tzapytanie = record
	tresc:string;
	odp1:string;
	odp2:string;
	odp3:string;
	odp4:string;
	odp_prawidlowa:integer;
end;

var
	pytanie:array [0..666] of tzapytanie;
	i:integer;
	liczba_pytan:integer;
	numer_pytania:integer;
	fakju:boolean;
	odpowiedz:char;
	dawaj_inne_pytanie:boolean;
	ostatnie_pytanie:integer;
   odpowiedz_dokurwiona:boolean;

procedure losuj;
begin
	numer_pytania:=random(liczba_pytan);
end;

procedure zapytuj;
begin
	fakju:=false;	
	repeat
		dawaj_inne_pytanie:=false;

		repeat losuj; until numer_pytania<>ostatnie_pytanie;
		ostatnie_pytanie:=numer_pytania;

		textcolor(3); for i:=1 to 80 do write('*');
		textcolor(8); writeln('WYJŚCIE: wduś ESC');
		textcolor(7); writeln;
		
		writeln(pytanie[numer_pytania].tresc);
		writeln('1. '+pytanie[numer_pytania].odp1);
		writeln('2. '+pytanie[numer_pytania].odp2);
		writeln('3. '+pytanie[numer_pytania].odp3);
		writeln('4. '+pytanie[numer_pytania].odp4);
		writeln;
		write('Wstukaj odpowiedź: ');
		
      odpowiedz_dokurwiona:=false;

		repeat
			repeat
            odpowiedz:=readkey;
			   case odpowiedz of
				  '1':begin i:=1; odpowiedz_dokurwiona:=true; end;
				  '2':begin i:=2; odpowiedz_dokurwiona:=true; end;
				  '3':begin i:=3; odpowiedz_dokurwiona:=true; end;
				  '4':begin i:=4; odpowiedz_dokurwiona:=true; end;
				  #27:begin clrscr; halt; end;
            end;
         until odpowiedz_dokurwiona=true;
			
			if i=pytanie[numer_pytania].odp_prawidlowa then 
			begin
				gotoxy(0,wherey); clreol;
				textcolor(10+128);
				writeln('DOBRZE!!!!!');
				delay(5000);
				gotoxy(0,wherey-1); clreol;
				textcolor(10);
				writeln('DOBRZE!!!!!');
				textcolor(7);
				dawaj_inne_pytanie:=true;
			end
			else begin
				textcolor(4+128);
				gotoxy(0,wherey);
				writeln('TY TŁUMOKU, POPRAWNA ODPOWIEDŹ TO NR '+inttostr(pytanie[numer_pytania].odp_prawidlowa)+' !!!!!!!!!!!!!');
				delay(5000);
				gotoxy(0,wherey-1);
				textcolor(4);
				writeln('TY TŁUMOKU, POPRAWNA ODPOWIEDŹ TO NR '+inttostr(pytanie[numer_pytania].odp_prawidlowa)+' !!!!!!!!!!!!!');
				textcolor(7);
				dawaj_inne_pytanie:=true;
			end;
		until dawaj_inne_pytanie=true;
	until fakju=true;
end;

begin
	//nakurwienie pytań
	//z pliku byłoby fajniej (chyba)
	with pytanie[0] do
	begin
		tresc:='Na jakiej częstotliwości nadawany jest Program I Polskiego Radia?';
		odp1:='224 kHz';
		odp2:='225 kHz';
		odp3:='227 kHz';
		odp4:='6095 kHz';
		odp_prawidlowa:=2;
	end;
	with pytanie[1] do
	begin
		tresc:='W której z wymienionych lokalizacji znajdowała się najmocniejsza radiostacja na świecie?';
		odp1:='Allouis';
		odp2:='Droitwich';
		odp3:='Konstantynów';
		odp4:='Taldom';
		odp_prawidlowa:=3;
	end;
	with pytanie[2] do 
	begin
		tresc:='Która firma produkuje karty graficzne bez sterowników?';
		odp1:='3dfx';
		odp2:='AMD';
		odp3:='Matrox';
		odp4:='NVIDIA';
		odp_prawidlowa:=2;
	end;

	//można jeszcze sprawdzić ile w ogóle jest nakurwionych pytań
	for i:=0 to 666 do
	begin
		if pytanie[i].tresc='' then
		begin
			liczba_pytan:=i;
			break;
		end;
	end;

	//komora mieszania jest pusta, następuje zwolnienie blokady
	randomize;

	//i rozpoczynamy nakurwianie
	zapytuj;
end.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post18 lip 2012, 17:32

Widzę masz znajomość, ja musiałem składnie pętli googlować, żeby to napisać,bo już z pascala nic nie pamiętam.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post18 lip 2012, 17:47

/me googlował tylko tablicę rekordów, repeat i case :trollface:
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post18 lip 2012, 20:58

lolasher pisze:

Kod: Zaznacz cały

program Gra;
uses crt, dos;

Type 
   pytanie = record
      question, a, b, c, d : string;
          answer : char;
   End;

Var q : array [1..10] of pytanie;


Function pytaj(q : pytanie)  : boolean;
var odp : char;
begin
  Clrscr;
  writeln(q.question);
  writeln(q.a);
  writeln(q.b);
  writeln(q.c);
  writeln(q.d);
  readln (Odp);
  if odp = q.answer then
     pytaj := true
  else
     pytaj := false;    
end;  

 
var punkty : integer;
BEGIN

  punkty :=0;
  Randomize; 
  



  q[1].question := 'Jaka pojemnosc ma dyskietka 5.25 cala (Podwojnej gestosci) ?';
  q[1].a :=  'A. 1.44MB';
  q[1].b :=  'B. 5.25MB';
  q[1].c :=  'C. 360Kb';        
  q[1].d :=  'D. 520Kb';
  q[1].answer := 'c';
  
  q[2].question := 'Ile to 2 + 2 ?';
  q[2].a :=  'A. 1';
  q[2].b :=  'B. 2';
  q[2].c :=  'C. 3';        
  q[2].d :=  'D. 4';
  q[2].answer := 'd';
  
  q[3].question := 'Ile to 3! ?';
  q[3].a :=  'A. 3';
  q[3].b :=  'B. 6';
  q[3].c :=  'C. 9';        
  q[3].d :=  'D. 12';
  q[3].answer := 'b';

  
  repeat
  
  If pytaj(q[(1+Random(3))]) = true then
     begin
	    inc(punkty);
	   writeln('Dobrze');
	   writeln(punkty);
	 end
  else
     writeln('Zle') ;   
	 
  until  punkty = 2 	 
  




END.

W językach programowania jest taka instytucja jak pętla, radzę się z tym zapoznać, bo daleko tak nie uciągniesz. Goto można nazwać bardzo prymitywną pętlą. Warunek zakończenia pętli dałem jakikolwiek, bo to i tak tylko dla przykładu.

I parę uwag:
-na co tyle begin endów? nie wciskaj ich wszędzie, potrzebne są kiedy chcesz kilka instrukcji zapisać jako jedną (np w if, albo pętli for)
-rób wcięcia w kodzie, bo zabłądzisz, dzięki temu widać, które instrukcje należą do którego bloku.

PS. Gadam o wcięciach, a sam dopiero zauważyłem jak mam krzywo. No nic, ale i tak rób :P
Wielkie dzięki, nareszcie mam podwaliny do losowania pytań. Jeszcze tylko parę rzeczy dam w procedurę i będzie ok.
Wiem co to są pętle :D, ale goto muszę użyć.
To co teraz napiszę może się wydawać dziwne ale, używam niepotrzebnie Beginów i Endów zamiast wcięć. :trollface:
pc.qwerty pisze:NOWA WERSJA NAKURWIACZA!!!!!!!!
Mój nakurwiacz będzie lepszy :P.c

No, to jak wszytko już wiem to nie pozostaje wam nic innego niż czekanie na moją koksiarską grę, żeby móc ją skrytykować i wynaleźć nowe Bricki.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post18 lip 2012, 21:02

Wiem co to są pętle , ale goto muszę użyć.
No ale nie musisz.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post18 lip 2012, 21:29

Potwierdzam, jest bardzo niewiele rozwiązań, gdzie goto jest lepsze od pętli. I zwykle w takich przypadkach jeszcze lepsza jest rekurencja. Nie pytajcie o przykład, nie potrafię podać, wiem tylko, że takie coś chyba jest ^^

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości