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
-
TheMediator95
- Posty: 468
- Rejestracja: 29 kwie 2010, 10:35
- Kontakt:
Jak chcesz - wyśle Ci pełną wersję tej gry. Jeszcze pokombinuje z rekordami.
Wyślij mi na PW Twój adres E-mail.
Wyślij mi na PW Twój adres E-mail.
-
lolasher
- Zasłużony użytkownik
- Posty: 2432
- Rejestracja: 10 paź 2008, 19:28
- Lokalizacja: Zadupie pod Siedlcami ;)
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.
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.
-
TheMediator95
- Posty: 468
- Rejestracja: 29 kwie 2010, 10:35
- Kontakt:
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:
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.
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.
-
lolasher
- Zasłużony użytkownik
- Posty: 2432
- Rejestracja: 10 paź 2008, 19:28
- Lokalizacja: Zadupie pod Siedlcami ;)
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
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).
/me popiera używanie pętli zamiast goto
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.
There is no cloud. It's just someone else's computer.
DOBRZE!!!!!!!!1111begin
tresc:='Która firma produkuje karty graficzne bez sterowników?';
odp1:='3dfx';
odp2:='AMD';
odp3:='Matrox';
odp4:='NVIDIA';
odp_prawidlowa:=2;
end;
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 ) || 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
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 ) || 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
-
lolasher
- Zasłużony użytkownik
- Posty: 2432
- Rejestracja: 10 paź 2008, 19:28
- Lokalizacja: Zadupie pod Siedlcami ;)
Ale za to ja nie znałem bardzo fajnej instrukcji "with", człowiek się uczy całe życie.pc.qwerty pisze:Kurwełe, lolasher był szybszy :S
Nie mogę się dopatrzeć co u ciebie w kodzie jest źle z losowaniem, ale u mnie (chyba) działa dobrze na trzech pytaniach.
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
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
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.
-
TheMediator95
- Posty: 468
- Rejestracja: 29 kwie 2010, 10:35
- Kontakt:
Wielkie dzięki, nareszcie mam podwaliny do losowania pytań. Jeszcze tylko parę rzeczy dam w procedurę i będzie ok.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
Wiem co to są pętle , 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ęć.
Mój nakurwiacz będzie lepszy .cpc.qwerty pisze:NOWA WERSJA NAKURWIACZA!!!!!!!!
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.
-
lolasher
- Zasłużony użytkownik
- Posty: 2432
- Rejestracja: 10 paź 2008, 19:28
- Lokalizacja: Zadupie pod Siedlcami ;)
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