Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Tipps und Ratschläge für Spiel & für effizientes Programmieren (https://www.delphipraxis.net/193665-tipps-und-ratschlaege-fuer-spiel-fuer-effizientes-programmieren.html)

Danny92 27. Aug 2017 16:29


Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt habe ich das Schiffe versenken soweit fertig gestellt und stelle es euch hier zur Verfügung. Ich bin für jeden Tipp, Verbesserungsvorschlag, konstruktive Kritik oder neuen Einfall jederzeit dankbar. Schlussendlich geht es mir neben der Kritik nun nur noch darum, etwas an Performance rauszuholen, denn bei aktivem Spielen mit der KI läuft meine - wenn auch nicht gerade schnellste - CPU immerhin schon bei ca. 33%. Ist das eurer Meinung nach normal bei einem Programm diesem Formats? Oder ist das schlichtweg "schlecht" programmiert? Wie sieht eure CPU-Auslastung aus? Denn bis jetzt konnte ich nicht erkennen woran das liegt, da ich mit effizientem Programmieren noch nicht so vertraut bin bzw. es selten das Problem war. Das Neuzeichnen der StringGrids oder das Vorausberechnen des nächsten Schusses der KI scheint es schon mal nicht zu sein.
Vielen Dank für eure kompetente Hilfe!

PS: Da das Programm wegen der Resource zu groß ist, muss es hier verlinkt werden. Minen sind noch nicht implementiert. :lol:

Glados 27. Aug 2017 16:37

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Da fehlt wohl die DPR-Datei :P
Und die Exe kannst du ruhig auf "Release" stellen. 60MB.. kommt mir stark vor wie Debug.

Aviator 27. Aug 2017 16:39

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Also ich würde es mir anschauen, aber die Seite auf die mich FileUpload beim Klick auf Download weiterleitet wird bei mir als unsicher angezeigt, da das Zertifikat nicht mehr gültig ist. Was genau ist denn in dem Programm so groß? Hast du da eine kompilierte Version drin? Wenn ja, dann lösche die einfach mal raus.

Danny92 27. Aug 2017 17:02

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Okay hier ist die vom Sound entschlackte Projektdatei. Lediglich deshalb war sie über 50 MB groß (das hier keine falschen Eindrücke entstehen :wink: , bei mir wurde der Link auch unsicher gemeldet :wink:) Deswegen hier noch einmal.

HolgerX 27. Aug 2017 19:42

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Hmm..

OK, dann fange ich hier mal an:

Nur mal Unit1 überflogen...

Delphi-Quellcode:
var
  Form1: TForm1;
  feldgroesse: byte = 10;
  blinkcount: byte = 0;
  a,b,schiffsindex,KIschiffindex,schussfeld: TPoint;
  shipplayer,shipki: TFlotte;
  spielstatus: byte = 0;
  letterissetted: boolean = false;
  firstpointissetted: boolean = false;
  completekoordinate: boolean = false;
  spielbeendetundverloren: boolean = false;
  schwierigkeitsgrad: byte = 1;
  playerfirst: boolean = true;
  vabwechselnd: boolean = false;
  vkischusssichtbar: boolean = false;
  playerIsPlaying: boolean = false;
  playerhasshot: boolean = false;
  mitGitter: boolean = true;
  BASS_Init: TBASS_Init;
  BASS_StreamCreateFile: TBASS_StreamCreateFile;
  BASS_ChannelIsActive: TBASS_ChannelIsActive;
  BASS_ChannelPlay: TBASS_ChannelPlay;
  BASS_ChannelStop: TBASS_ChannelStop;
  BASS_Free: TBASS_Free;
  expindex: integer = 0;
  backgroundmusic,strs: HStream;
  flottengroesse: array[1..5] of integer;
  wasserindex: integer = 0;
  demoisactive: boolean = false;
  demoabort: boolean = false;

implementation
-> Vermeide 'Globale' Variablen soweit wie möglich, eigentlich sollte hier nur
Delphi-Quellcode:
var
  Form1: TForm1;
stehen und sonst keine weiteren..
-> Die Meisten Variablen werden 'nur' in diesem Formular verwendet und sollten somit (mit 'F' davor) in den private-Bereich der Form.
-> Die ganzen BASS-Sachen packst Du in eine eigene Unit, der Übersicht wegen, wobei, wofür ist denn die 'bass.pas' dar? ;)

So.. Nur mal den Anfang gemacht.. ;)

Danny92 27. Aug 2017 20:06

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Okay danke das ist doch schon mal was. Ich werd' da weiter dran arbeiten und mich um effizieteren Gebrauch der Variablen kümmern. Womöglich hab ich dann halt mehr Parameter, und den Rest schieb ich in den private-Bereich. Aber ich fürchte das wird nicht das Problem sein für die hohe CPU-Auslastung oder?
Die Bass.pas hab ich nur am Anfang gebraucht, wie ich die Bass.dll in der Ressource noch nicht reingepackt hab, bzw. sie noch nicht zu verwenden gewusst hatte. :roll: Damit gebe ich eben Hintergrundmusik und einige Soundeffekte wieder, die bei Schiffe versenken ja ganz nett sind.

DP-Maintenance 27. Aug 2017 20:27

Dieses Thema wurde am "27. Aug 2017, 20:27 Uhr" von "Luckie" aus dem Forum "Multimedia" in das Forum "Software-Projekte der Mitglieder" verschoben.

Luckie 27. Aug 2017 20:28

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Mach den Anhang bitte an deinen ersten Beitrag und lösche den Link zum Download.

Glados 27. Aug 2017 21:13

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Zitat:

Ich werd' da weiter dran arbeiten und mich um effizieteren Gebrauch der Variablen kümmern. Womöglich hab ich dann halt mehr Parameter,
Wieso solltest du dadurch mehr Parameter haben? Du verschiebst du aktuell globalen Variablen einfach dort hin, wo sie besser aufgehoben sind und änderst die Stellen ab, wo du auf sie zugreifst.

Zitat:

Aber ich fürchte das wird nicht das Problem sein für die hohe CPU-Auslastung oder?
Nein.

Danny92 27. Aug 2017 21:25

AW: Tipps und Ratschläge für Spiel & für effizientes Programmieren
 
Ja das mit den Variablen werde ich schon hinbiegen.
Nur das mit dem Delay ist wirklich notwendig, zumindest im OnMouseDown-Ereignis von der FeldKI-Komponente, da mir das Programm bei Sleep einfrieren würde (von wegen keine Rückmeldung), und das ist natürlich nicht so toll, mit Delay kommt das nicht mehr vor. In der BtDemo macht das natürlich kein Sinn klar...
Aber ich brauche jedenfalls an mehreren Stellen in OnMouseDown gewisse Pausen mit Verzögerung zum Abspielen der Soundeffekte. Okay ich sehe schon, dass Delay dafür verantwortlich ist. Dankeschön. Kann ich die Prozedur evtl. ressourcensparender gestalten?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.
Seite 1 von 4  1 23     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf