Autor Beitrag
killercode
Hält's aus hier
Beiträge: 9

WinXP pro
Delphi 7 personal
BeitragVerfasst: So 06.02.05 16:12 
Hi!

Hab ein kleines Problem...
Ich möchte mit einem Bekannten ein textbasiertes OnlineRollenspiel schreiben und
bin grad an dem Punkt: Charaktererstellung. (Ich test grad alles mögliche für mich selbst...bin Anfänger! :D )
Sooo nun habe ich vorgegebene Atttributpunkte und die kann ich ja auch schon
auf ein Atttribut verteilen nur - ich kann mehr Punkte vergeben als ich habe (es zählt dann in den negativen bereich rein....)?!!!
Wie kann ich das unterbinden?

Bitte um schnelle, hilfreiche Anregungen!

thx&ciao

P.S.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
...
procedure TForm2.FormCreate(Sender: TObject);
begin
     Form2.Caption:='*Charaktermenü*'//Hier werden die Startwerte festgelegt...
     name:=Namen.text;                 //Namensvariable wird aus dem Editfeld gelesen
     punkt:=5;                         //[X-Punkte zur selbstständigen Verteilung der Anfangswerte]
     punkte.Caption:=IntTostr(punkt);  //Anfangswert "Attributpunkte" = 0 auf Panel ausgegeben
     Strke.Caption:=IntToStr(stark);   //Anfangswert "Stärke" = 0 auf Panel ausgegeben
     Treffsicher.Caption:=IntToStr(treff); //Anfangswert "Treffsicherheit" = 0 auf Panel ausgegeben
     Ausdauer.Caption:=IntToStr(ausd); //Anfangswert "Ausdauer" = 0 auf Panel ausgegeben

// Treffsicherheit und Ausdauer sind noch nicht Skillbar, Versuch erstmal nur auf Stärke beschränkt
end;

procedure TForm2.strupClick(Sender: TObject); //"+ Button" (ein Panel) um ein Punkt auf Stärke zu setzen
begin
     stark:=StrToInt(Strke.Caption); //aktuellen Stärkewert einlesen (ist ja 0)
     stark:=stark+1;                 // +1 zu Stärke
     Strke.Caption:=IntToStr(stark); //neuen Stärke-Wert auf dem Panel anzeigen
     punkt:=StrToInt(Punkte.Caption);//aktuelle Attributpunkte zum skillen (erstmal 5)
     punkt:=punkt-1;                 //beim clicken wird von der Gesammtpunktzahl einer abgezogen
     punkte.Caption:=IntTostr(punkt);//zu vergebende Punkte werden aktualisiert
end;
...


Bitte nicht schimpfen wenns schlecht/sinnlos/dumm gelöst wurde.
Es reagiert auf die UP- und DOWN-Schalte der Eigenschaft:Stärke.
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: So 06.02.05 16:53 
Du musst um die Anweisungen in TForm2.strupClick eine if-Abfrage schreiben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm2.strupClick(Sender: TObject); //"+ Button" (ein Panel) um ein Punkt auf Stärke zu setzen   
begin
   if punkt>0 then
   begin   
     stark:=StrToInt(Strke.Caption); //aktuellen Stärkewert einlesen (ist ja 0)   
     stark:=stark+1;                 // +1 zu Stärke   
     Strke.Caption:=IntToStr(stark); //neuen Stärke-Wert auf dem Panel anzeigen   
     punkt:=StrToInt(Punkte.Caption);//aktuelle Attributpunkte zum skillen (erstmal 5)   
     punkt:=punkt-1;                 //beim clicken wird von der Gesammtpunktzahl einer abgezogen   
     punkte.Caption:=IntTostr(punkt);//zu vergebende Punkte werden aktualisiert   
   end
   else ShowMessage('Was soll der Mist!!! Wenn ich sage, du hast keine Punkte mehr, dann hast du keine mehr!!!');
end;

_________________
Linux und OpenSource rulez!
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: So 06.02.05 16:56 
Du kennst if..then nicht?

Frage vorher ab, ob überhaupt noch Punkte übrig sind:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if punkt > 0 then
   begin
   ...
   end;
killercode Threadstarter
Hält's aus hier
Beiträge: 9

WinXP pro
Delphi 7 personal
BeitragVerfasst: So 06.02.05 17:37 
Ach shyce! :D

Also:
1. DANKE!!! Aber ich kenn If...Then, aber
2. Hab die Schleife bei mir falsch gesetzt! ^^
3. Bin voll der Anfänger... :roll: :lol:

Vielen Dank Leute, jezze kanns weitergehn...

ciao

EDIT: OK hab jetzt die beiden anderen Atttribute (Konstitution und Treffsicherheit) eingebaut und was ist: Ich kann die 5 Punkte verteilen aber jetzt kann ich auch wieder in den negativen Bereich der Attribute, damit kann ich die Skillpunkte wieder auf 5 Hochtreiben und sozusagen eine Eigenschaft total in den Minusbereich treiben und eine andere dafür total hoch...wieso kann man nicht sagen [X Element der pos. Ganzzahlen] ???
Oder geht das irgendwie????

thx
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 07.02.05 10:25 
killercode hat folgendes geschrieben:
Ich kann die 5 Punkte verteilen aber jetzt kann ich auch wieder in den negativen Bereich der Attribute, damit kann ich die Skillpunkte wieder auf 5 Hochtreiben und sozusagen eine Eigenschaft total in den Minusbereich treiben und eine andere dafür total hoch...
Dann sitzen deine if-Abfragen immer noch oder schon wieder falsch. Da aber niemand deinen aktuellen Code kennt ...

killercode hat folgendes geschrieben:
wieso kann man nicht sagen [X Element der pos. Ganzzahlen] ???
Kann man ja, aber hilft dir nichts. Wenn du trotzdem versuchst, noch einen abzuziehen, obwohl der Wert schon auf Null ist, wird's trotzdem knallen (Programmfehler oder logischer Fehler (Rückwärtsüberlauf bei Typ Byte, z.B.)).

Du wirst wohl oder übel - wie oben beschrieben - das Subtrahieren durch eine entsprechende if-Abfrage verhindern müssen.