![]() |
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
danke an alle :zwinker:
|
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
hoi,
ich habe mich eben gefragt, wie ich nachher noch weiss, wo im array der wert für einen nick ist. wenn ich: "myarray: array of integer;" als array definiere und für jeden Nick, der eine richtige antwort gegeben hat eine variable in das array hinzufüge muss ich doch nachher irgendwie noch wissen welcher wert für welchen nick war oder? |
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Du kannst ja auch ein merhdimensionales Array erstellen, oder ein Record.
|
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Delphi-Quellcode:
type
TAntworter = record Nick: String; Richtig: Integer; Gesamt: Integer; end; var Antworter : array of TAntworter; begin setlength(Antworter, 10); // erstmal 10 Stück Antworter[0].Nick := 'Luckie'; Antworter[0].Richtig := 5; Antworter[0].Gesamt := 5; |
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Wie man sieht, hatte ich mit der Idde eines Records recht :mrgreen:
|
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
das ist perfekt, danke lueckie, dafür das du's extra geschrieben hast. danke @the_master ^^
|
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Ich wollte nur bei dem Quiz gewinnen. :mrgreen:
|
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
lol, der thread ist hier sowieso ein quiz, die antworten weiss ich natürlich *g*.
ich hab noch eine:
Delphi-Quellcode:
wenn jemand (in diesem fall ich) die frage richtig beantwortet, geht es bis hier:
procedure ChkResult(nick, s: string);
var i: integer; b: boolean; begin if Form1.Timer1.Enabled then begin if s = lowercase(Antwort) then begin b := false; Form1.IdIRC1.Say('#united-forum', '14¤03¤09¤ Richtige antwort ' + nick); Form1.Timer1.Enabled := false; for i := 0 to high(QuizAntwort) do begin if QuizAntwort[i].nick = nick then begin inc(QuizAntwort[i].rAntworten); b := true; Form1.IdIRC1.Say('#united-forum', '14¤03¤09¤ ' + nick + ' hat jetzt ' + IntToStr(QuizAntwort[i].rAntworten) + ' richtige Antworten'); break; end; end; if b = false then begin SetLength(QuizAntwort, high(QuizAntwort)+1); QuizAntwort[high(QuizAntwort)].nick := nick; inc(QuizAntwort[high(QuizAntwort)].rAntworten); Form1.IdIRC1.Say('#united-forum', '14¤03¤09¤ ' + nick + ' hat jetzt ' + IntToStr(QuizAntwort[high(QuizAntwort)].rAntworten) + ' richtige Antworten'); end; if QuizOn then QuizProc; end; end; end; Zitat:
![]() eigentlich müsste nach "richtige antwort silent" noch "silent hat jetzt ... punkte" kommen, das tut es aber nicht. also, das ist das erste mal das ich mit dynamischen arrays arbeite, also nicht so hart sein :wink:. "QuizAntwort" ist eine global(damit ich von mehreren prozeduren aus zugreifen kann) definierte variable des typs "TQuizAntwort" und ist von dem aufbau her mit luckies beispiel identisch, bis auf "antworten gesamt" |
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Hi ihr,
Ich schreib das mal hier rein und zwar: Ich mache gerade ein Quiz...es hat 3 Antwortmöglichkeiten. Ich wolte fragen, wie man 1.) einen Joker dazumacht, der eine falsche Antowrt wegstreicht und 2.) die Auswerung macht und 3.) die Fragen in geordneter Reihenfolge erscheinen lässt. Hier ist mal mein Quellcode:
Delphi-Quellcode:
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons; type TForm1 = class(TForm) b_frage: TButton; b_fertig: TButton; Panel1: TPanel; RadioGroup1: TRadioGroup; BitBtn1: TBitBtn; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure b_frageClick(Sender: TObject); procedure b_fertigClick(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; const Max = 7; // 7 Fragen var Form1: TForm1; Frage : Array[1..Max] of String; // von 1-5 Antwort: Array[1..Max, 1..3] of String; Richtig: Array[1..Max] of Integer; Nr : Integer; // Die Nummer der jeweils richtigen Antwort (*reihe: Array[1..7] of integer;*) implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin (*randomize; for i:= 1 to 7 do begin*) Frage[1] := 'Was ist das von Borland entwickelte Delphi?'; Antwort[1,1]:= 'Eine griechische Stadt, die von den sogenannten "Borländern" gegründet wurde'; Antwort[1,2]:= 'Ein von der Firma Borland entwickeltes Programmier-Programm'; Antwort[1,3]:= 'Ein Roboter, der von einem Mann namens Borland gebaut wurde und "Delphi" heißt'; Richtig[1]:= 2; Frage[2] := 'Mit welcher Delphi-Version konnte Borland viele Pascal-Veteranen begeistern?'; Antwort[2,1]:= 'Delphi 25'; Antwort[2,2]:= 'Delphi 10'; Antwort[2,3]:= 'Delphi 1'; Richtig[2]:= 3; Frage[3] := 'Welches "Pascal-Dialekt" von Borland wurde besonders berühmt?'; Antwort[3,1]:= 'TurboPascal'; Antwort[3,2]:= 'SuperPascal'; Antwort[3,3]:= 'HyperPascal'; Richtig[3]:= 1; Frage[4] := 'Welchen anderen Namen bekam Delphi für kurze Zeit?'; Antwort[4,1]:= 'Enterprise'; Antwort[4,2]:= 'Inprise'; Antwort[4,3]:= 'Surprise'; Richtig[4]:= 2; Frage[5] := 'Wann wurde die Programmiersprache, auf der Delphi basiert, entwickelt?'; Antwort[5,1]:= '500 vor Christus von König Alexander I. von Makedonien'; Antwort[5,2]:= '1920 von Melina Mercouri, eine griechische Schauspielerin'; Antwort[5,3]:= 'In den Jahren 1968 - 1972 an der ETH Zürich von Prof. Nikolaus Wirth'; Richtig[5]:= 3; Frage[6] := 'Was sind globale Variablen?'; Antwort[6,1]:= 'Globale Variablen gibt es gar nicht'; Antwort[6,2]:= 'Globale Variablen können nur durch spezielle Befehle angesprochen werden'; Antwort[6,3]:= 'Globale Variablen gelten im ganzen Programm'; Richtig[6]:= 3; Frage[7] := 'Was ist das Gegenstück zur globalen Variable'; Antwort[7,1]:= 'Die "normale Variable"'; Antwort[7,2]:= 'Die "lokale Variable"'; Antwort[7,3]:= 'Die "Variable"'; Richtig[7]:= 2; end; procedure TForm1.b_frageClick(Sender: TObject); begin Nr := random(Max) + 1; Panel1.caption := Frage[Nr]; RadioGroup1.Items[0] := Antwort[Nr,1]; // beginnt bei 0! Radiogroup1.Items[1] := Antwort[Nr,2]; Radiogroup1.Items[2] := Antwort[Nr,3]; RadioGroup1.ItemIndex:= -1; end; procedure TForm1.b_fertigClick(Sender: TObject); begin if Radiogroup1.ItemIndex = Richtig[Nr]-1 then Panel1.Caption := 'Richtig!' else Panel1.Caption := 'Falsch!'; if Radiogroup1.ItemIndex = -1 then Panel1.Caption :='Bitte geben Sie eine Antwort!'; end; |
Re: Hilfe beim einem Quiz: beliebig viele variablen zur lauf
Hallo deLin,
bitte eröffne zu jeder Frage einen neuen Thread. Das hat Gründe der Übersicht. Wenn jemand nach einer Frage sucht, findet er sonst einen Thread mit mehreren Fragen und er muss sich immer den ganzen langen Thread durchlesen ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz