AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)
Thema durchsuchen
Ansicht
Themen-Optionen

Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

Ein Thema von Bosgu · begonnen am 4. Jun 2011 · letzter Beitrag vom 5. Jun 2011
Antwort Antwort
Bosgu

Registriert seit: 2. Jun 2011
13 Beiträge
 
#1

Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 4. Jun 2011, 22:35
Delphi-Version: 5
Guten Abend,

ich bins wieder. Folgendes Problem: Ich habe mich nun an die Highscoreliste dran getraut und wenn wunderst, hänge ich wieder.

1. Prob

unti2 übernimmt nicht das edit feld von unit1

2.Prob

weiß ich nicht genau wie ich es hinkommen soll das der score einen platz in der liste ersetz, sodass alle einen platz runter rutschenund die letzten gelöscht werden
(das löschen ist nicht so wichtig, da meine ausgabe nur 20 felder groß ist und insgesamt 10 spieler angezeigt werden)

meine stringliste ist folgend aufgebaut

Name
00
name
00


Delphi-Quellcode:
//Verloren
if leben<=0 then
begin
PlaySOUND(PChar('C:\Projekt Duell (end.)\Sound\verloren.wav'),hInstance,snd_ASync );
timer2.enabled:= false;
timer1.enabled := false;
lvl:=0;

listbox1.enabled:=true;
listbox1.visible:=true;





//Problem anfang

x:=1;
repeat
if count >= strtoint(score[x]) then
begin


//Soll name von Form1 hinkommen
//addscore[x-1]=Form1.edit.text

//hier soll der vorherige Platz ersetzt werden
//score[x]:=count

break; //heute rausgefunden das es vorzeitig abricht
end;

inc(x);
inc(x);
until x=score.count;


//Problem ende







x:=0;

repeat
Listbox1.items.add('1. ' +score[x] +'mit ' +score[x+1] +' Punkten');
inc(x);
inc(x);
until x=score.count;

score.SaveToFile('C:\Projekt Duell (end.)\mittel.txt');
count:=0;

MfG

Geändert von Bosgu ( 4. Jun 2011 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 4. Jun 2011, 22:47
Ich will mich mal trauen und etwas ehrlich sein - wenn ich so deinen Beitrag lese, hab ich echt keine Lust, dir zu helfen! Mir wird sogar fast übel.

Erstens geht nicht wirklich hervor, was du genau bezwecken willst (vlt ja, aber dein Quellcode sagt etwas anderes [oder versucht es zumindest >.>])
Und zweitens - pack alles mal in die [ delphi] [ /delphi] Tags und rück ordentlich ein.

Das ist ja voll der Horror!

Edit:
Delphi-Quellcode:
  break;
//heute rausgefunden das es vorzeitig abricht
Eigne dir mal die Grundlagen an. Wenn man kochen lernt, fängt man auch nicht direkt mit Pizzen an!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Bosgu

Registriert seit: 2. Jun 2011
13 Beiträge
 
#3

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 4. Jun 2011, 23:17
hm

Zitat:
Erstens geht nicht wirklich hervor, was du genau bezwecken willst (vlt ja, aber dein Quellcode sagt etwas anderes [oder versucht es zumindest >.>])
Das ist ja mein problem, der Quellcode funktioniert so nicht richtig, deswegen wende ich mich um hilfe in diesem Forum.

Zitat:
Und zweitens - pack alles mal in die [ delphi] [ /delphi] Tags und rück ordentlich ein.
Habe ich nun editiert, danke für den Hinweis


Zitat:
Edit:
markieren
Delphi-Quellcode:
break;
//heute rausgefunden das es vorzeitig abricht
Eigne dir mal die Grundlagen an. Wenn man kochen lernt, fängt man auch nicht direkt mit Pizzen an!
Das ist wohl richtig, aber beim kochen hat man ein Rezept an das man sich halten kann. Für mich ist es neu Land etwas so komplizierter (für mich) wie mein Spiel zuerstellen.

In der Schule hatte wir alle paar stunden einen neuen befehl kennen gelertn, dieser war nicht dabei. Auf im bin ich erst heute gestoßen, als ich in google nach möglichkeiten suchte um den Highscore zumachen.

Ich weiß mir fehlt noch eine Menge an Wissen in dem Delphi-Feld, da ich nicht so lange damit zutun habe.
Ich hoffe das hat alles ein bischen aufgeklärt.

MfG

Geändert von Bosgu ( 4. Jun 2011 um 23:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 4. Jun 2011, 23:47
Also der Quelltext ist absolut konfus. Und die fehlende Formatierung macht es nicht gerade einfacher ihn zu verstehen. Fass ihn mal zusammen und formatier in gescheit. Des weiteren solltest du auch aussagekräftige Bezeichner verwenden, um die Verständlichkeit zu erhöhen.

Du willst einen Wert in eine sortierte Liste einfüge. Am einfachsaten wäre es, wenn in jeder Zeile Name und Ergebnis strehen würden:
Name1 nnn
Name2 nnn
Name3 nnn
Dann kann man das in einer Stringliste ablegen. Mit der Methode Insert kann man dann an der gewünschten Stelle einen neuen Highscore einfügen. Überschreitet die Anzahl der Eintrag einen bestimmten Wert, kann man die höheren Eintrage einfach in einer Schleife von hinten löschen, bis die Liste wieder die gewünschte Anzahl Einträge enthält.

Mehr kann man bei deiner Problemdarstellung kaum helfen.

Und bitte nur eine Frage/Problem pro Beitrag.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bosgu

Registriert seit: 2. Jun 2011
13 Beiträge
 
#5

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 5. Jun 2011, 00:10
Ok habe versucht nun auf das Wesentlichste zubeschränken.

Der Quellcode hier soll nur einen niedrigeren Highscorewert ersetzten und dann aus gehen.

count = ist der erspielte wert im Spiel zb 18900
form1.edit.text = Ist der Name des Spieler

STringlistse

1.Name
20000
2.Name
17000

soll zu

1.Name
2000
2. form1.edit.text
(18900)countwert

Delphi-Quellcode:



x:=1; //x=1 damit er bei der 2ten Stelle anfängt wo der zahlenwert drinnen steht
repeat
if count >= strtoint(score[x]) then
begin

//Was mir fehlt
//1. [x-1] hier damit der name ersetzt wird =Form1.edit.text
//2. [x] = count damit Wert ersetzt wird

break; //soll die ganze repeat schleife beenden wenn der erst mögliche wert ersetzt wurde
end;
inc(x);
inc(x);//Sprung bis zur nächsten zu überprüfenden Zahl

until x=score.count;
Ich hoffe so sollte der Delpi-Code formatiert werden.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 5. Jun 2011, 01:40
Denk doch einfach mal scharf und logisch nach!!
Dann wirst du darauf kommen, dass du 3 Funktionen bauchst.
1.) eine Funktion, die prüft ob ein bestimmter Score es wert ist in die Highscoreliste eingetragen zu werden
Delphi-Quellcode:
// Result:
// 0 = kein Eintrag in Liste, weil Score zu schlecht
// 1 = Eintrag in Liste; bestehender Eintrag würde verdrängt
// 2 = Eintrag in Liste; Platz 1
function CheckScore(highscorelist:TStrings; score:integer):integer;
2.) eine Procedure, die das Eintragen vornimmt und dazu noch den Spielernamen benötigt
Delphi-Quellcode:
// score und Spielername in Liste eintragen
procedure InsertScore(highscorelist:TStrings; score:integer; const PlayerName:string);
3.) eine Procedure, die die Einzahl der Einträge auf eine best. Stückzahl begrenzt
Delphi-Quellcode:
procedure LimitScorelist(highscorelist:TStrings; maxlen:integer);
begin
  while highscorelist.Length > maxlen do
    highscorelist.delete(highscorelist.Length-1);
end;
So, damit hast du das Grundgerüst.
Was zählt sind nur diese Funktion/Prozeduren.
Kein form1.edit.text; du hast eine Funktion/Procedure mit Parametern, nur diese Parameter sind wichtig!
Programmiere diese ausserhalb von deinem Spiel in einem eigens dafür geschriebenen Testprogramm.
Die Highscoreliste wäre normalerweise eine TStringList.
Für dein Testprogramm nimmst du aber das Property Lines eines TMemo.
  Mit Zitat antworten Zitat
Bosgu

Registriert seit: 2. Jun 2011
13 Beiträge
 
#7

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 5. Jun 2011, 14:01
Hallo,

danke für den versuch es mir zuerklären, leider versteh ich von den selbst gemachten funtionen und prozeduren nicht viel.

Nach langem grübeln hab ich es nun selbst geschafft mit der repeat schleife.

Delphi-Quellcode:
x:=1;
g:=19;
repeat

if count >= strtoint(score[x]) then
begin

repeat //umsetztung der niedrigeren Zahlen nach unten
if g=1 then
begin
break;
end;
score[g]:=score[g-2];
score[g-1]:=score[g-3];
dec(g);
dec(g);
showmessage(inttostr(g));
showmessage(inttostr(x));
until g=x;


score[x-1]:=edit1.text; //neuer wert an stelle eintragen
score[x]:=inttostr(count);
break;
end;

inc(x);
inc(x); //Sprung bis zur nächsten zu überprüfenden Zahl
showmessage(inttostr(x));
until x=21;
Danke das ihr euch Zeit genommen habt mir zu helfen.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 5. Jun 2011, 14:06
...leider versteh ich von den selbst gemachten funtionen und prozeduren nicht viel.
Mach doch erst mal einen Einsteigerkurs: http://www.delphi-treff.de/tutorials...nd-funktionen/
Ohne Ahnung von Funktion, Prozeduren und Methoden ist sinnvolles Programmieren nicht möglich!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Spiel programmieren, (Highscoreliste, ich weiß alt und abgekaut)

  Alt 5. Jun 2011, 14:13
...leider versteh ich von den selbst gemachten funtionen und prozeduren nicht viel.
Mach doch erst mal einen Einsteigerkurs: http://www.delphi-treff.de/tutorials...nd-funktionen/
Ohne Ahnung von Funktion, Prozeduren und Methoden ist sinnvolles Programmieren nicht möglich!
Zunächst erst mal den StyleGuide, denn die Einrückung des Quelltexts geht gar nicht - welche Einrückung? - eben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz