Neuankömmling in Purebasic

Für allgemeine Fragen zur Programmierung mit PureBasic.
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Neuankömmling in Purebasic

Beitrag 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
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Neuankömmling in Purebasic

Beitrag 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
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: Neuankömmling in Purebasic

Beitrag 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
Autonomus
Beiträge: 30
Registriert: 20.02.2015 18:21

Re: Neuankömmling in Purebasic

Beitrag 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
[Aktuelles Projekt: Core Project | Media Library (Core Project based)]
  • OS: Windows 7 Ultimate x64 | PB: PureBasic 5.40 x86/x64

    CPU: AMD Phenom(TM) II X4 965 BE (4x 3.4GHz @3.8GHz) | GPU: nVidia GeForce 8200 (512MB), nVidia GeForce GT 730 (4096MB)
    RAM: 8GB | HDD: 250GB Samsung, 1TB Samsung
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: Neuankömmling in Purebasic

Beitrag 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
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Neuankömmling in Purebasic

Beitrag 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.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: Neuankömmling in Purebasic

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Neuankömmling in Purebasic

Beitrag 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.
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: Neuankömmling in Purebasic

Beitrag 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 ??
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Neuankömmling in Purebasic

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten