Seite 1 von 2

Neuankömmling in Purebasic

Verfasst: 01.03.2015 12:27
von Baba_Smurf
Hallo,

da das mein erster Post hier ist, bitte ich um Nachsicht, denn ein Forum in dem Neulinge sich vorstellen, habe ich hier nicht gefunden.
zu meiner Frage eine kurze Einleitung, ich hatte die letzte Zeit ein Projekt in BLITZMAX angefangen, aber leider ist in dem Forum generell so gut wie nichts mehr los, was eigentlich schade ist, desweiteren findet man so gut wie keine Handbücher über BLITZMAX selbst, also habe ich gesucht und bin auf Purebasic gestossen, und habe mir erst einmal die Demo installiert, ein Handbuch gelesen(zumindest angefangen) und muß sagen es scheint mir zuliegen, das es Blitzmax ziemlich ähnlich ist.
Mein Projekt, das ich in BM angefangen habe, bin ich auch schon seit gestern dabei in PB zu portieren, die GUI steht schon bis auf ein zwei Kleinigkeiten.

Zu meinem Projekt.

Es soll ein Visualisierungprogramm werden, vorgestellt habe ich mir es grob so:
Ich lade ein vorhandenes Bild in ein Canvas(als Mustervorlage)
in einem zweiten Canvas soll man das erste ähnlich nachbauen sollen, und das soll so funktionieren:
ich kann mir verschieden große Steinchen aus Comboboxen auswählen, diese sollen prozentual auf das zweite Canvas gezeichnet werden.
dh. ich habe z.B aus Combobox1 20% Steine die sind zwischen 5-8mm groß, aus Combobox2 z. Steine die sind nur 1-3mm groß usw.
Insgesamt habe ich 8 Comboboxen zur Auswahl, aber meine eigentlich Frage wäre es, ist es in Purebasic möglich so etwqas zu realisieren, bzw. kann man irgendwie diese Steine (die ja mehrere hundert werden können) auf Kollision prüfen??

Ein Bild von dem was ich in BMax gemacht habe, zur Ansicht:

Bild

mfg

Re: Neuankömmling in Purebasic

Verfasst: 01.03.2015 13:43
von Vera
Willkommen on PureBoard Baba_Smurf :-)

Dein Projekt hört sich ja spannend an und wünsche Dir viel Erfolg damit.

'Kollisionen' sollte man mit PureBasi realisieren können, doch ich selber bin in den Bereichen 2DDrawing oder Engine3D oder Physik Engine nur genießender Zuschauer.
Mit diesen Begriffen, solltest Du einiges in der Hilfe und in den Foren finden können.

Gruß ~ Vera

Re: Neuankömmling in Purebasic

Verfasst: 01.03.2015 13:55
von Baba_Smurf
Vielen Dank Vera,

ich hoffe nur das ich mit PureBasic weiter komme wie in Blitzmax, es scheint ja alleine von der Befehlen her mehr zu bieten wie Blitzmax und vor allem eine aktivere Community.

mfg Peter

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 01:14
von Autonomus
Willkommen bei uns, Baba_Smurf. :)

Vielleicht hilft dir dieser Befehl etwas weiter (mehr dazu findest Du in der Hilfe) -> SpriteCollision() und SpritePixelCollision().

Grüße von Autonomus

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 07:58
von Baba_Smurf
Danke Autonomos,

dachte ich mir schon, die Frage ist jetzt natürlich, kann ich hiermit mehrer COllisionen auf ein mal prüfen??
sagen wir mal ich lade 100 Sprites in ein Canvas, ein Zufallsgenerator soll die Position bestimmen, kann ich diese dann so prüfen das kein Sprite ein anderes berührt??

aber bis ich dahin komme dauerts noch etwas.

mfg

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 09:52
von Bisonte
Baba_Smurf hat geschrieben:...sagen wir mal ich lade 100 Sprites in ein Canvas...
Ähm Sorry, das wird nicht funktionieren.
Sprites funktionieren nur mit einem Screen.

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 19:12
von Baba_Smurf
gibt es denn in PB die Möglichkeit Bilder auf Collision zu prüfen, oder müssen es zwangsläufig Sprites sein??
In Blitzmax gibt es z.B die Function ImagesCollide(image1:TImage,x1,y1,frame1,image2:TImage,x2,y2,frame2) , diese prüft z.b auf pixelgenaue Kollision.

mfg

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 19:37
von NicTheQuick
Ich glaube Stargate hatte mal eine Funktion geschrieben für ImageCollision. Aber nativ geht das nicht, weil es durch fehlende Hardwarebeschleunigung dann sowieso recht lahm wäre.

Re: Neuankömmling in Purebasic

Verfasst: 02.03.2015 20:19
von Baba_Smurf
es muss doch eine Möglichkeit geben geladene Bilder per Zufall in ein Canvas zu zeichnen, ohne das die sich überlappen, oder seh ich das falsch ??

Re: Neuankömmling in Purebasic

Verfasst: 03.03.2015 00:16
von mk-soft
Hi,
willkommen im Forum.

Canvas = Leimwand. Must also alles selber Malen. Also die 2D-Drawing Hilfe mal durch schauen.

Beim Canvas werden die Bilder immer übereinander gezeichnet. Must wohl die Positionen und die Größen selber vorher berechnen.

Mal ein kleines Beispiel

Code: Alles auswählen

; Fenster
Enumeration
  #Main
EndEnumeration

; Gadgets
Enumeration
  #Canvas
EndEnumeration

Global exit

; Pictures
Enumeration
  #pic0
  #pic1
EndEnumeration


Procedure LoadPictures()

  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    LoadImage(#pic0, #PB_Compiler_Home + "examples\sources\Data\Background.bmp")
    LoadImage(#pic1, #PB_Compiler_Home + "examples\sources\Data\PurebasicLogo.bmp")
  CompilerElse
    LoadImage(#pic0, #PB_Compiler_Home + "examples/sources/Data/Background.bmp")
    LoadImage(#pic1, #PB_Compiler_Home + "examples/sources/Data/PurebasicLogo.bmp")
  CompilerEndIf
  
EndProcedure

Procedure Draw()
  
  Protected x, y, dx, dy
  
  dx = GadgetWidth(#Canvas)
  dy = GadgetHeight(#Canvas)
  
  If StartDrawing(CanvasOutput(#Canvas))
    Box(0, 0, dx, dy, RGB(192,192,192))
    DrawImage(ImageID(#pic0), 10, 10)
    DrawImage(ImageID(#pic1), 30, 40)
    StopDrawing()
  EndIf
  
EndProcedure

Procedure Main()
  
  Protected Event
  
  If OpenWindow(#Main, #PB_Any, #PB_Any, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    
    CanvasGadget(#Canvas, 5, 5, WindowWidth(#Main) - 10, WindowHeight(#Main) - 10)
    
    LoadPictures()
    
    Repeat
      Event = WaitWindowEvent()
      
      Select Event
          
        Case #PB_Event_Repaint
          Draw()
          
        Case #PB_Event_CloseWindow
          exit = #True
          
      EndSelect
      
    Until exit
    
  EndIf
    
EndProcedure : Main()

P.S. kein gutes Beispiel. Zeigt überlappende Bilder.