AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Tipps und Ratschläge für Spiel & für effizientes Programmieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Danny92 · begonnen am 27. Aug 2017 · letzter Beitrag vom 5. Sep 2017
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Danny92
Danny92
Registriert seit: 18. Aug 2014
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.
Angehängte Dateien
Dateityp: zip Schiffe versenken - fertig - Kopie.zip (958,6 KB, 31x aufgerufen)

Geändert von Danny92 (27. Aug 2017 um 20:32 Uhr)
 
Glados
 
#2
  Alt 27. Aug 2017, 16:37
Da fehlt wohl die DPR-Datei
Und die Exe kannst du ruhig auf "Release" stellen. 60MB.. kommt mir stark vor wie Debug.
  Mit Zitat antworten Zitat
Aviator

 
Delphi 10.3 Rio
 
#3
  Alt 27. Aug 2017, 16:39
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.
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

 
Delphi 10.2 Tokyo Starter
 
#4
  Alt 27. Aug 2017, 17:02
Okay hier ist die vom Sound entschlackte Projektdatei. Lediglich deshalb war sie über 50 MB groß (das hier keine falschen Eindrücke entstehen , bei mir wurde der Link auch unsicher gemeldet ) Deswegen hier noch einmal.
Angehängte Dateien
Dateityp: zip Schiffe versenken - fertig - Kopie.zip (958,6 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
HolgerX

 
Delphi 6 Professional
 
#5
  Alt 27. Aug 2017, 19:42
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..
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

 
Delphi 10.2 Tokyo Starter
 
#6
  Alt 27. Aug 2017, 20:06
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. Damit gebe ich eben Hintergrundmusik und einige Soundeffekte wieder, die bei Schiffe versenken ja ganz nett sind.
  Mit Zitat antworten Zitat
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.
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#8
  Alt 27. Aug 2017, 20:28
Mach den Anhang bitte an deinen ersten Beitrag und lösche den Link zum Download.
Michael
  Mit Zitat antworten Zitat
Glados
 
#9
  Alt 27. Aug 2017, 21:13
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.
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

 
Delphi 10.2 Tokyo Starter
 
#10
  Alt 27. Aug 2017, 21:25
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?

Geändert von Danny92 (27. Aug 2017 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    

 

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 12:31 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