ÐrawMania • (2D-Drawing-Spiele-Serie)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

ÐrawMania • (2D-Drawing-Spiele-Serie)

Beitrag von STARGÅTE »

So, damit Beiträge zu diesem Thema nicht zu DontDrop kommen mache ich jetzt hier ein Thema auf und werde hier ein paar CODEs reinstellen bezüglich 2D-Drawing.

Jetzt ist noch nix zu sehen, weil ich erst ein bisschen was vorbereiten muss, wenn ihr aber schon fragen habt zur SERIE "DrawMania", dann könnt ihr die Hier ruhig stellen. auch wenn ihr Fragen habt wie man das eine oder andere nur mit LineXY realisieren könnte.

DrawMania
  • DrawMania ist eine Spiele-Serie für PureBasic die versucht nur mit ganz einfachen Mitteln interessante Spiele und Effekte zu entwickeln. Zu den einfachen Mitteln gehören bei Grafik "2D-Drawing" und bei Audio "Beep".
    In dieses Spielen ist es verboten mit Sprites zu Arbeiten oder gar Sprites3D, auch dürfen keine Sound oder Movie Befehle verwendet werden. (InitSprite darf verwendet werden um einem Screen zu benutzen)
Topic sticky - Kaeru fecit :allright:
Zuletzt geändert von STARGÅTE am 07.05.2007 22:56, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Keine Sound Befehle? Du meinst das einbinden und abspielen exterener sounds? Was mit sound effekten die "on-the-fly" erzeugt werden?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Ich meine damit das du nicht schreiben sollst PlaySound, egal was Sound ist.

Sondern es soll nur mit Hilfe von Beep(Frequenz, Dauer) ein Ton/Effekt/Lied erzeugt werden
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Na dann schaffe, schaffe, Häusle baue! Ein "Lied" mit Beep_(). Naja, wir haben ja gesehen das es geht aber ist den Aufwand dann wohl nicht wert und ich werde mich auf einfache Sound Effekte beschränken. Wie auch immer, ich finde den Contest dufte und werd' versuchen mal was zusammen zuschrauben. Bild
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Das mit dem Sound versteh ich nicht.
Ich mag keine Anwendungen die Beep_() verwenden. Egal ob ein Spiel oder der dumme Virenscanner.
Warum schließt du PlaySound() aus? Klar, wenn das Spiel "oldschool" aussieht, dass man nicht mit 1a klingenden MP3's ankommt. Aber On-The-Fly erstellte Sounds unterstreichen das doch eigentlich (*denk an die neue Lib von Hroudtwolf*)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Sagen wir mal so, die Überschrift heißt ja "DrawMania", es geht mir also vorallem um die Draw-Befehle. Wenn du/ihr nun das BEEP nicht mögt ^^ dann könnt ihr eben Sounds benutzen und wenn dieser Sound einem "altertümlichen" Spiel nahe kommt ist das denke ich mal ok.

@Admin/Mod : Ich glaube ich habe das Thema im falschen Sub-Forum gepostet, vllt wäre es in "Ankündigungen" besser aufgehoben, wwil es ja eine Art Contest geworden ist.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich würde sagen, Du haust mal einen Admin an, wie es mit einem Contest
aussieht, haben ja lange keinen gehabt. Wenn Rob mitspielt, wir Sponsoren
finden, wird bestimmt Interessant, obwohl schon wieder nix für mich :mrgreen:
Bis zur Klärung lassen wir den Thread mal hier stehen, denke ich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Macros
Beiträge: 1314
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Natürlich kann man mit Beep schöne Lieder schreiben,
ich hab da noch ein uraltes Projekt aus den Anfängen
meiner Programmierertage auf dem Webspace:
www.10a.rshost.de/load/files/notenspieler.exe

(das Startlied heißt Üsküdara,
kommt glaube ich aus der Türkei und wir
hatte es irgendwann mal im Musikunterricht)
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

....

Vorgeschichte :HIER

...

Also, das mit den DLL und LIB geht leider nicht wegen 3.3, auf dieses Thema gehe ich nicht weiter ein!

So wie ich das jetzt heraus lesen konnte geht es eigendlich nicht mehr nur um Spiele mit 2D Drawing sonder auch andere Spiele und dnan ganz allemeine sachen wie : Explosion, Menü.

Ich selber tue mich immer schwer meine CODE so zu programmieren das ich feste Proceduren habe, aber ich wede die Explosionroutiene mal für euch sauber abschreiben.

PS: Aber es wäre natürlich auch nicht schlecht wenn sich alle ein paar gedanken machen wie sie sowas machen könnten :wink:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

[Sry wegen DoppelPost]

So ich habe mal hier eine einfache darstellung einer Explosion von Linien :

Code: Alles auswählen

InitSprite()

#b = 0.01745329
Procedure.f Abstand(x1, y1, x2, y2)
 r.f = Sqr(Pow(x1-x2,2)+Pow(y1-y2,2))
 ProcedureReturn r
EndProcedure
Procedure.f Diagonale(x.f,y.f)
 r.f = Sqr(x*x+y*y)
 ProcedureReturn r
EndProcedure
Procedure.f Winkel(x.f,y.f)
 Winkel.f
 If x = 0
  If y <  0 : Winkel = -90 : EndIf 
  If y >= 0 : Winkel =  90 : EndIf 
 Else 
  Winkel = ATan(y/x)/#b 
  If x < 0 : Winkel + 180 : EndIf 
 EndIf 
 If Winkel < 0 : Winkel + 360 : EndIf 
 ProcedureReturn Winkel
EndProcedure



Structure P
 Farbe.l ; Farbe
 l.l     ; Teilchenlänge
 x.f     ; x-Position
 y.f     ; y-Position
 dx.f    ; Flugrichtung (in X)
 dy.f    ; Flugrichtung (in Y)
 rw.l    ; Eigenrotationswinkel
 rdw.l   ; Eigenrotationswinkeländerung
EndStructure

NewList P.P() ; Partikelliste

; Fügt ein Partikel hinzu mit (Farbe, Posion(x,y), Flugrichtung, Geschwindigkeit, Rotationsgeschwindigkeit)
Procedure AddParticle(Farbe, l, x, y, w.f, v.f, rdw.f)
 AddElement(P())
 P()\Farbe = Farbe
 P()\l = l
 P()\x = x
 P()\y = y
 P()\dx = Cos(w*#b)*v
 P()\dy = Sin(w*#b)*v
 P()\rw = w
 P()\rdw = rdw
EndProcedure
Procedure AddExplosion(Farbe, l, x.f, y.f, Dichte.f, v.f, rdw.f)
 nn = 360*Dichte
 For n = 1 To nn
  AddParticle(Farbe, l, x, y, n/Dichte, Random(v*100)/100+v/2, rdw)
 Next n
EndProcedure

#Gravitation = 0.01 ; bei 0 keine


OpenWindow(1, 300, 0, 600, 600, #PB_Window_MinimizeGadget, "2D-Drawing")
 OpenWindowedScreen(WindowID(1), 0, 0, 600, 600, 0, 0, 0)

Repeat

 Event = WindowEvent()
 Select Event
  Case #PB_EventCloseWindow
   End
 EndSelect

 ClearScreen(0,0,0)
 
 StartDrawing(ScreenOutput())
 
  ResetList(P())
  While NextElement(P())
   ; Gravitation
   P()\dy + #Gravitation 
   ; Bewegung
   P()\x + P()\dx
   P()\y + P()\dy
   ; Eigenrotation
   P()\rw + P()\rdw
   ;Anzeige
   Winkel = Winkel(P()\dx,P()\dy)+P()\rw
   x2 = Cos(Winkel*#b)*P()\l
   y2 = Sin(Winkel*#b)*P()\l
   Line(P()\x, P()\y, x2, y2, P()\Farbe)
   ; Deletakontrolle
   If P()\y > 620 : DeleteElement(P()) : EndIf
  Wend
 
 StopDrawing()
 
 FlipBuffers()

 WMx = WindowMouseX()
 WMy = WindowMouseY()
 
 If GetAsyncKeyState_(#VK_LBUTTON) <> 0
  Druck = 1
 ElseIf Druck = 1
  Druck = 0
  Rot = Random(127)+128
  Gruen = Random(127)+128
  Blau = Random(127)+128
  Laenge = Random(10)+5 ; Wie groß soll eines Teilchens durchschnittlich sein
  Dichte.f = (Random(15)+5)/10 ; Wie viele Teilchen soll es pro 1° geben
  v.f = (Random(20)+5)/10 ; wie schnell sollen die Teilchen Durchschnittlich fliegen
  rdw.f = Random(4) ; wie schnell soll die Eigenrotation der Teilchen sein
  AddExplosion(RGB(Rot,Gruen,Blau), Laenge, WMx, WMy, Dichte, v, rdw)
 EndIf
 
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten