Proste losowanie pytań - pomoc!

0

Potrzebuję procedury, która będzie losowo (!!!) ustawiała pytania i wyświetlała je na etykietach (lblOdp1, lblOdp2,...). Pytania mam następującego formatu:

Odp: array[1..4] of String[50];

Ważne jednak jest, abym wiedział, która jest poprawna!!! Podczas wczytywania z pliku odpowiedzi ta pierwsza jest zawsze prawdziwa. Procedura musi je zatem rozmieścić, tak, aby użytkownik nie wiedział, która jest prawdziwa, ale, co jest logiczne, program musi wiedzieć, aby sprawdzić czy nie nastąpiła pomyłka. :]
Ma ktoś jakiś pomysł? I jak zrobić tablicę 4 obiektów typu TLabel, bo wydaje mi się, że to by bardzo zoptymalizowało kod?

0

Zrob sobie rekord:

[code]pytanie = record
pytanie:string;
A,B,C,D:string; // odpowiedzi
poprawna:char lub integer;
end;
[/code]

no i teraz mysle ze mozesz juz zrobic dalej, po prostu musisz zawsze zrobic zmienna ktora bedzie pamietala na ktorej pozycji znajduje sie prawdlowa odpowiedz.

Chyba juz nie bedziesz mial z tym problemow

0

Ehhh... być może źle sformułowałem pytanie. Mam następujący rekord:

TDat = packed record
nr: integer;
Pyt: String[100];
Odp: array[1..4] of String[50];
end;

Pierwszy element tej tablicy jest odpowiedzią poprawną. Problem stanowi ustawienie tych odpowiedzi w losowej kolejności. Jeśli zrobię "random(4) to mogą się nałożyć te odpowiedzi na siebie. Jak tego uniknąć?

0

var
losowo : array[1..4] of String[50];
uzyte: array [1..4] of boolean;
i, x: integer;
pytanie:TDat;

begin

for i:=1 to 4 do
uzyte[i]:=False;

for i:=1 to 4 do
begin
repeat
x:=Random(4)+1;
until not uzyte[x];

losowo[i]:=Pytanie.Odp[x];
uzyte[x]:=true;
end;

Możesz też wstawić odpowiedzi do TStringList, wybierać Random(Lista.Count) i wybrany usuwać z listy aż lista bedzie pusta. Nie będzie trzeba tablicy użyte.

PS. Kod z głowy, mogą być błędy...

0

Wielkie dzięki za pomoc. To faktycznie powinno rozwiązać mój problem. :-) na razie wyjeżdżam na długi weekend bez dostępu do kompa, ale jak wrócę to dam znać czy wszystko działa jak należy. :-)
Pozdrowienia.

0

http://strony.wp.pl/wp/mw_marynarz/kacik.html
Na samym dole są źródła. Działąjacej gry.

Jest to zrobione w Pascalu, ale może ci sie przyda. Fajna zabawa.

To rodzaj testu z biologii . Program dokonuje odczytu z pliku tekstowego test.txt kolejnych wierszy dopóty, dopóki nie zostanie osiągnięty koniec pliku. Kolejno odczytywane są: pytania, odpowiedzi, następnie użytkownik podaje swoją propozycje z klawiatury a komputer informuję czy propozycja gracza zgadza się z oryginalną. Na koniec podawana jest liczba błędnych oraz dobrych odpowiedzi i wystawiona zostaje ocena.

0

Wyślij mi swój adres na [email protected]. Chyba piszemy podobne programy!

1 użytkowników online, w tym zalogowanych: 0, gości: 1