Skocz do zawartości
Ignition

[Delphi7]Statystyka i wybieranie losowe

Rekomendowane odpowiedzi

Witam!

Stawiam dopiero pierwsze kroki w pisaniu programów więc prosze o nie mieszanie mnie z błotem:)

Otóż napisałem na podstawie tutoriala zawartego w Komp. Świat Ekspert

gre edukacyjną jednak chciałbym ją ulepszyć.

1. W jaki sposób moge dodać statystyke, która pod koniec testu wyświetli w nowym oknie ilosc poprawnych odpowiedzi i na jej podstawie wystawi ocenę/ew jakis komentarz

2. Co musze dopisać aby pytania nie wyświetlały się liniowo tylko losowo.

 

pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to moze ja podam kod bo nie bardzo wiem o co chodzi:)

 

unit gra;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls, Menus;type  Ttest = class(TForm)    panelPytanie: TPanel;    panelOdpowiedz: TPanel;    panelStatystyka: TPanel;    tekstPytanie: TLabel;    Label1: TLabel;    Label2: TLabel;    Label3: TLabel;    tekstLiczbaPytan: TLabel;    tekstLiczbaPoprawnych: TLabel;    tekstLiczbaNiepoprawnych: TLabel;    radioOdpowiedz1: TRadioButton;    radioOdpowiedz2: TRadioButton;    radioOdpowiedz3: TRadioButton;    przyciskOdpowiedz: TButton;    MainMenu1: TMainMenu;    Gra1: TMenuItem;    Odpowiedz1: TMenuItem;    Koniec1: TMenuItem;    Autor1: TMenuItem;    procedure Autor1Click(Sender: TObject);    procedure Koniec1Click(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure przyciskOdpowiedzClick(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;  const liczbaPytan =11;var  test: Ttest;  pytania: array [1..liczbaPytan] of string;  odpowiedzi1: array[1..liczbaPytan] of string;  odpowiedzi2: array[1..liczbaPytan] of string;  odpowiedzi3: array[1..liczbaPytan] of string;  poprawne: array[1..liczbaPytan] of integer;  aktualnePytanie:integer;  liczbaPoprawnych:integer;implementationuses Unit2;{$R *.dfm}procedure uaktualnijNapisy(numerPytania:integer);begintest.Caption:='Gra dla ZIP el0. Pytanie ' + intToStr(aktualnePytanie) + '/' +intToStr(liczbaPytan);test.tekstPytanie.Caption:=pytania[numerPytania];test.radioOdpowiedz1.Caption:=odpowiedzi1[numerPytania];test.radioOdpowiedz2.Caption:=odpowiedzi2[numerPytania];test.radioOdpowiedz3.Caption:=odpowiedzi3[numerPytania];test.tekstLiczbaPytan.Caption:=intToStr(aktualnePytanie - 1 );test.tekstLiczbaPoprawnych.Caption:=intToStr(liczbaPoprawnych);test.tekstLiczbaNiepoprawnych.Caption:=intToStr(aktualnePytanie - liczbaPoprawnych -1 );end;procedure Ttest.FormCreate(Sender: TObject);beginpytania[1]:='j';odpowiedzi1[1]:='a';odpowiedzi2[1]:='y';odpowiedzi3[1]:='o';poprawne[1]:=2;pytania[2]:='t';odpowiedzi1[2]:='k';odpowiedzi2[2]:='i';odpowiedzi3[2]:='r';poprawne[2]:=1;pytania[3]:='xx';odpowiedzi1[3]:='fa';odpowiedzi2[3]:='M';odpowiedzi3[3]:='s';poprawne[3]:=1;liczbaPoprawnych:=0;aktualnePytanie:=1;uaktualnijNapisy(aktualnePytanie);end;function ktoraOdpowiedzWybrano: integer;begin if test.radioOdpowiedz1.Checked then begin    test.radioOdpowiedz1.Checked:=false;    ktoraOdpowiedzWybrano:=1; end else if test.radioOdpowiedz2.checked then begin    test.radioOdpowiedz2.Checked:=false;    ktoraOdpowiedzWybrano:=2; end else if test.radioOdpowiedz3.checked then begin    test.radioOdpowiedz3.Checked:=false;    ktoraOdpowiedzWybrano:=3; end else    ktoraOdpowiedzWybrano:=-1;end;procedure Ttest.przyciskOdpowiedzClick(Sender: TObject);var wybranaOdpowiedz:integer;begin    wybranaOdpowiedz:= ktoraOdpowiedzWybrano();    if wybranaOdpowiedz=-1 then    showMessage ('Zaznacz odpowiedz debilu')    elsebegin  if wybranaOdpowiedz=poprawne[aktualnePytanie] then      liczbaPoprawnych:=liczbaPoprawnych+1;aktualnePytanie:=aktualnePytanie+1;  if aktualnePytanie<=liczbaPytan then      uaktualnijNapisy(aktualnePytanie)  else  begin      test.tekstLiczbaPytan.Caption:=intToStr(liczbaPytan );      test.tekstLiczbaPoprawnych.Caption:=intToStr(liczbaPoprawnych);      test.tekstLiczbaNiepoprawnych.Caption:=intToStr(liczbaPytan - liczbaPoprawnych );      showmessage('To juz koniec:(');      close;end;end;end;procedure Ttest.Autor1Click(Sender: TObject);beginform2.showmodal;end;procedure Ttest.Koniec1Click(Sender: TObject);beginApplication.MessageBox('Czy chcesz zakończyc gre?','Test',MB_YesNoCancel + MB_IconQuestion);close;end;end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if wybranaOdpowiedz=-1 then     showMessage ('Zaznacz odpowiedz debilu')

nie ma to jak program user-friendly ;]

 

 

w tej chwili to juz nie rozumiem pytania ... jaka statystyke bys chcial ? , bo ja tu widze jak wol

test.tekstLiczbaPytan.Caption:=intToStr(aktualnePytanie - 1 ); test.tekstLiczbaPoprawnych.Caption:=intToStr(liczbaPoprawnych); test.tekstLiczbaNiepoprawnych.Caption:=intToStr(aktualnePytanie - liczbaPoprawnych -1 );
jak na moje oko to jest gotowa statystyka ;]

jak juz mowilem: jak chcesz miec z tego kolorowe slupki i inne takie to pobaw sie komponentem TChart (wrzucasz na forme i wciskasz F1 ;])

 

komentarze robisz sobie na podstawie koncowych wartosci .... nie rozumiem co w tym trudnego, jesli potrafiles zrobic to co wkleiles to nie powinno Ci to sprawic klopotu...

 

. Co musze dopisać aby pytania nie wyświetlały się liniowo tylko losowo.

aktualnePytanie:=random(liczbapytan)+1;

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ę...