Autor Beitrag
Mr_Emre_D
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 114
Erhaltene Danke: 14



BeitragVerfasst: Sa 16.04.11 16:38 
Ähm, wo kann man das runterladen?

Edit: Oh, jetzt ist es da =|
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 16.04.11 16:39 
Im ersten Beitrag als Anhang? ;-)
EDIT: Ja, manchmal hilft einmal aktualisieren. :D
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 16.04.11 17:37 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Am besten wäre, wenn man es einfach in der Größe verändern könnte wie man es will. Denn so macht das Spiel auf einem normalen Full-HD Bildschirm gerade einmal ein Drittel der Höhe und Breite aus.

Und warum nutzt du nicht einfach die System-Knöpfe zum Maximieren / Wiederherstellen / Schließen? So ist das nicht gerade intuitiv.

Und dann fehlt noch die Benutzung der Laufzeitthemes (XP-Style), so sehen die Buttons doch ziemlich hässlich aus. ;-)


Also wäre vll wirklich angenehmer, wenn man die Größe verändern kann. Mach ich rein ;)
Genauso werde ich den selbst gemachten X- und die anderen Buttons entfernen (ich wollte eigentlich noch alle (Bit)Btn in Images umwandeln und vll in anderen Farben/Formen etc. machen :P Muss aber nicht)

Was meisnt du mit Laufzeitthemes? :) Und welche Buttons, die häßlich aussehen, meinst du jetzt, die (Bit)Buttons oder die in der Leiste?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 16.04.11 17:51 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Was meisnt du mit Laufzeitthemes? :)
Rechts deine, links die mit Laufzeitthemes (das sind normale TButtons, aber mit denen geht das erst ab Delphi 2010 oder so, vorher eben TBitBtns wie bei dir). ;-)

ButtonThemes

Dafür reicht es in den Projektoptionen unter Anwendung die Laufzeitthemes zu aktivieren (ab Delphi 2007) oder die Unit XPMan in die uses einzubinden (ab Delphi 7) oder manuell eine Manifestdatei als Ressource einzubinden (Delphi 6 und früher).
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von jaenicke am Sa 16.04.11 18:18, insgesamt 1-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Sa 16.04.11 18:12 
Hübsches Spiel, erinnert mich an das Minigolf auf Playray.de, hast du dich daran orientiert? :)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
rushifell
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Sa 16.04.11 18:19 
Mir gefällt Dein Spiel auch :-)

Ein paar Kleinigkeiten:
- Bei mir wird das Formular beim Starten des Programms immer zu weit nach unten gesetzt (Bildschirm-Auflösung 1280*768 Widescreen ;-))
- Ich höre keinen Sound. Habe Windows Vista.

Gruß rushifell
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 16.04.11 18:27 
user profile iconrushifell hat folgendes geschrieben Zum zitierten Posting springen:
- Ich höre keinen Sound. Habe Windows Vista.
Einen Sound höre ich weder mit Windows 7 noch mit Windows XP im virtuellen PC. ;-)
rushifell
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Sa 16.04.11 18:39 
Dachte, der Sound wäre implementiert.
beastofchaos hat folgendes geschrieben:
Sound bei jeder Wandcollision - Problem: es hängt meist leicht, wenn er den Sound abspielt.

Probier's doch vielleicht mal mit der Bass.dll. Aber für einen Soundeffekt lohnt sich das nicht gerade.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Sa 16.04.11 18:41 
Das Soundfile lässt sich nichtmal mit VLC abspielen. Nur wenn ich's in Winamp starte, dann hör ich was.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 16.04.11 21:38 
@rushifell:
Die Sound-datei ist eine wav-Datei, das hatte ich gebraucht, weil ich das nicht über einen Mediaplayer machen wollte und die andere Möglichkeit ging nur mit wav...
Ich hab schon einiges von diesem bass.dll gehört, ich schau mir dazu gleich mal ein paar Topics an und versuch mich da mal ran ;)
Übrigens die 3/4 Zeilen für Sound hab ich als Kommentar gekennzeichnet, da das halt mit dem Hängen nervt - deswegen hörst du nichts :) Kann mir ja noch ein Lied bei YT suchen und im Hintergrund spielen lassen :P

Formular setz ich gleich ma so, dass es in der Mitte erscheint ;) neue Version bekmmt in einer Stunde spätestens

@Tilman:
Und ja hab ich :) Das Spiel ist aber unmöglich grafisch gemacht :) Wenn du mal bei mir die Schübe anschaust (Hellgrüne Pfeile auf Grüner Fläche) und sie dann mal mit Playray vergleichst... Bei ihnen sind die Pfeile an den Hintergrundrasen angepasst -> heißt, dass sie nicht einfarbig sind, sondern jeder Pixel mal dunkler, mal heller ist - keine Ahnung, wie ich das nachmachen könnte :/

@jaenicke:
Gut, das schau ich mir auch mal bei Delphi XE an

Danke für eure vielen Antworten und Tipps,
Grüße Thomas
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 16.04.11 22:17 
Ich hab grad versucht wieder den eigenen X-Button zu entfernen und dachte mir, dass dabei doch nur die eine Form geschlossen wird und die andere im Hintergrund unsichtbar(Hint) noch läuft, aber bei Prozesse ist Minigolf.exe dann weg (?) - Closed dieser X-Button oben rechts vll alle Forms?

Bei der Hauptform ist das sogar so, aber wenn ich die Editorform schließe bleibt der Prozess/ die Anwendung erhalten. Werde einfach bei EditorForm.OnClose ein MainForm.Close einbauen unter der Bedigungen, dass das Close durch die EditorForm aufgerufen wird :) mal schaun

Edit: Es reicht auch, wenn ich ein MainForm.Close hinzusetze - alles suppi :)
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 16.04.11 23:18 
Neue Version ist ab jetzt drinne:
- Die Leiste oben ist wieder aktiviert -> kein eigener X-Button etc.
- Fenster kann vergrößert/ verkleinert werden
- Fenster wird am Anfang mittig angeordnet
(- Wenn die Funktion 'QueryPerformanceCounter(Frequency)' False ausgibt, wird eine Meldung angezeigt und das Programm beendet)

Ein Problem wäre da noch. Wer Win7/Vista hat kennt sicher die Funktion, dass man z.B. das Fenster nach oben schiebt und es dann automatisch maximiert wird ( geht auch mit Doppelklick auf Leiste ). Wenn man es dann wieder verschiebt wird die alte Größe angenommen, das heißt er hat iwie die Breite und Höhe vor dem Maximieren gespeichert, bloß wo? Denn wenn man das Maximiert und dann den Editor aufruft, wird dieser nicht maximiert aber ist dann genauso groß - muss man dann leider selber wieder verkleinern. Habe in dem ordner die Exe "Minigolf_Anzeige" mitgeliefert - nochmal das Spiel - bloß, dass in der Caption immer die Breite und Höhe der Form angezeigt werden. Damit kann man sich das mal anschauen

Mir fällt grad auf, dass geht auch auf XP etc., da man es einfach nur iwie maximieren muss - in jedem Fall werden die Maße vom verkleinerten Modus iwo gespeichert.

PS: Anhang wäre zu groß wegen zweiter Exe, aber das ist sowieso unwichtiger, dass die Größen angezeigt werden, kann man schließlich erahnen :P
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 17.04.11 07:31 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
- Fenster kann vergrößert/ verkleinert werden
Ich meinte eigentlich, dass sich das Spielfeld daran anpassen sollte. ;-)
Sich also skalieren sollte. Also so wie hier (ist alles eine Paintbox bis auf die Leiste oben):
www.delphi-forum.de/viewtopic.php?p=557541

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Denn wenn man das Maximiert und dann den Editor aufruft, wird dieser nicht maximiert aber ist dann genauso groß - muss man dann leider selber wieder verkleinern.
Da musst du aber selbst was dran drehen, das ist kein Standardverhalten. ;-)
Siehe Beispiel in PN.
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 17.04.11 10:46 
Vorher wurde die EditorForm von Größe und Position ja immer an die MainForm angepasst. Habs jetzt korrigiert - EditorForm wird imemr mittig angezeigt und hat eine feste Größe. Wenn aber MainForm maximeirt ist, wird auch die EditorForm maximiert und andersrum ;)

Deswegen ist jetzt neue Version drinne
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 17.04.11 11:53 
Was noch nicht optimal ist, ist, dass neue Level hier gespeichert werden (das Programm liegt unter c:\Program Files (x86)\Minigolf):
ausblenden Quelltext
1:
C:\Users\Sebastian\AppData\Local\VirtualStore\Program Files (x86)\Minigolf\Levels\Not_Delete					

Denn im eigenen Ordner hat das Programm logischerweise keine Schreibrechte. Solange du jetzt die Laufzeitthemes nicht aktivierst, geht Windows davon aus, dass es sich um ein altes Programm für Windows 9x handelt und korrigiert Schreibzugriffe automatisch in den genannten Ordner. Sobald du die Themes aber aktivierst, gibt es beim Speichern schlicht Fehler.

Normalerweise gehören solche Daten ins Anwendungsdatenverzeichnis.
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 17.04.11 12:43 
Also was empfiehlst du mir jetzt gegen das Problem zu machen?
Ich hab grad ne Stunde dran gesessen, um Bild neu zu machen und alle BitBtns in Buttons und ImageLists umgewandelt. Aber erst nur auf der MainForm, später oder morgen auf der EditorForm auch noch ;)

Edit Link nicht gesehen^^ ich schaus mir an
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: So 17.04.11 12:58 
Ich hab einen Bug gefunden: wenn man direkt an eine Bande ranspielt, und dann versucht mit dem nächsten Schlag gegen die Bande zu spielen, dann wird das Level neu gestartet. Allerdings beginnt die Kugel dann oben links, und nicht im Startfeld, was in Level 2 zu einem Deadlock führt, weil oben links das Pfeilfeld ist, und der Ball automatisch beschleunigt wird.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 17.04.11 13:09 
Gut, das wäre dann auch mal entfernt. Das lag daran, dass ich eig eingestellt habe:
Wenn BallWandKollision und sich der Ball nicht bewegt, dann Neustart...^-^
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Do 28.04.11 00:36 
Also wie gesagt, ist jetzt eine neue Version drinne. Auffallend für euch sind warsch nur die blinkenden Hindernisse bei Kollision. Und zwar werden sie der Farbe Weiß angenähert. Mit "Paint.Net" Hab ich mir mal verschiedene Farbe angeschaut, aber ob ich sie Gelbd/Weiß/Schwarz/Rot aufleuchten lasse - Es sieht nciht wirklich gut aus. Weiß ist noch iwie das beste :) Vll habt ihr da einen Vorschlag für eine gute Farbe. Zu meinem Minigolf passen halt so rote Farben nicht so gut.

Beim Aufleuchten erwarten sicher viele einen Ton... Das werde ich in der nächsten Woche versuchen mit bass.dll rneizumachen. Vll habt ihr ein gutes Tutorial, das ich mir morgen mal reinziehen kann :)
rushifell
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Do 28.04.11 04:50 
Ich poste mal meine Support-Unit für die Bass.dll. Keine Ahnung, ob's mit der aktuellen Version noch funktioniert. Der Bass.dll liegen aber immer sehr gute und einfache Beispiele in Delphi bei, auf denen diese Unit basiert.

ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
{
Version: 2.3.0.2
Initialisieren: StartBass;
Beenden: EndBass;
Sound Laden: LoadMusicData  //0..128 mögliche Streams
Sound freigeben: FreeMusicData //0..128 mögliche Streams
}


unit MyBass_Unit;

interface

Function StartBass:Boolean;
Procedure EndBass;
Function LoadMusicData(Dateiname:String; Index:Byte; Playloop:Boolean):Boolean;
Procedure FreeMusicData(Index:Byte);
Function PlayMusic(Index:Byte):Boolean;
Function StopMusic(Index:Byte):Boolean;
Function MusicPlaying(Index:Byte):Integer;
Function Continue_Music(Index:Byte):Boolean;
Function PauseMusic(Index:Byte):Boolean;
Function Music_GetVolume(Index:Integer):Integer;
Function Music_SetVolume(Index:Integer; Volume:Integer):Boolean;

implementation
Uses Windows, Bass;
Var     strs: array[0..128of HSTREAM;    //Maximum an Streams

Function StartBass:Boolean;
Begin
Result:=True;
IF (HIWORD(BASS_GetVersion) <> BASSVERSION) then
   Result:=False else
IF not(BASS_Init(-14410000nil))then
   Result:=False;
End;

Procedure EndBass;
Begin
BASS_Free();
End;

//Playloop => Spielt Sound in Endlosschleife
Function LoadMusicData(Dateiname:String; Index:Byte; Playloop:Boolean):Boolean;
Begin
  IF Playloop then
     strs[Index] := BASS_StreamCreateFile(False, Pchar(Dateiname), 00, BASS_SAMPLE_LOOP) else
     strs[Index] := BASS_StreamCreateFile(False, Pchar(Dateiname), 000);
End;

Procedure FreeMusicData(Index:Byte);
Begin
BASS_StreamFree(strs[Index]);
End;

Function PlayMusic(Index:Byte):Boolean;
Begin
Result:=True;
IF not(BASS_ChannelPlay(strs[Index], True)) then Result:=False;
End;

Function Continue_Music(Index:Byte):Boolean;
Begin
Result:=True;
IF not(BASS_ChannelPlay(strs[Index], False)) then Result:=False;
End;

//0 = Stopped; 1 = Playing; 2 = Stalled; 3 = Paused
Function MusicPlaying(Index:Byte):Integer;
Begin
Result:=Bass_ChannelisActive(strs[Index]);
End;

Function StopMusic(Index:Byte):Boolean;
Begin
BASS_ChannelStop(strs[Index]);
End;

Function PauseMusic(Index:Byte):Boolean;
Begin
BASS_ChannelPause(strs[Index]);
End;

Function Music_GetVolume(Index:Integer):Integer;
Var Freq, Vol:Cardinal;
    Pan:Integer;
Begin
Bass_ChannelGetAttributes(Strs[Index],Freq,Vol,Pan);
Result:=Vol;
End;

Function Music_SetVolume(Index:Integer; Volume:Integer):Boolean;
Var Freq, Vol:Cardinal;
    Pan:Integer;
Begin
Result:=False;
Bass_ChannelGetAttributes(Strs[Index],Freq,Vol,Pan);
Vol:=Volume;
IF Bass_ChannelSetAttributes(Strs[Index],Freq,Vol,Pan) then
   Result:=True;
End;

end.