Ignition Opublikowano 22 Września 2004 Zgłoś Opublikowano 22 Września 2004 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
pit Opublikowano 22 Września 2004 Zgłoś Opublikowano 22 Września 2004 musisz napisac cos wiecej o sposobie wyswietlania pytan.... co do statystyk to musisz gdzies zapisywac udzielane odpowiedzi .... potem wziac sobie jakis np. TChart , dodac serie i tada! gotowe statystyki ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ignition Opublikowano 23 Września 2004 Zgłoś Opublikowano 23 Września 2004 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
pit Opublikowano 4 Października 2004 Zgłoś Opublikowano 4 Października 2004 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; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...