Blitz Basic Funktionen in PB

Anfängerfragen zum Programmieren mit PureBasic.
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in PB

Beitrag von NathanielBlack »

Thx. Wie muss ich denn das machen, dass das geht?
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Blitz Basic Funktionen in PB

Beitrag von Andesdaf »

Code: Alles auswählen

EnableExplicit
oben in den Code.

dann die Procedure hinter die Variablendeklaration (mx,...) stellen
und 'Button' global machen.
Win11 x64 | PB 6.20
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in PB

Beitrag von NathanielBlack »

Code: Alles auswählen

EnableExplicit

InitSprite()

InitMouse()

InitKeyboard()




OpenScreen(800,600,16,"Buttons by NathanielBlack")


Global Button

Global mb1

Global mx

Global my

mb1 = MouseButton(1)

mx = MouseX()

my = MouseY()
Procedure Button(x,y,w,h,text$)

  ExamineMouse()
  StartDrawing(ScreenOutput())
    Box(x,y,w,h,RGB(255,255,255))
    DrawText(x,y,text$)
  StopDrawing()
  If mx > x And mx < x + w And my > y And my < y + h And mb1 = 1
    Button = 1
  EndIf


EndProcedure

Repeat
ClearScreen(RGB(0,0,0))
ExamineMouse()
Select Button(500,100,100,20,"Ende")
  Case 0

Select Button
  Case 2
   StartDrawing(ScreenOutput())
     DrawText(0,0,"Maus ist im Button")
   StopDrawing()
  Case 1
   End
EndSelect
EndSelect

StartDrawing(ScreenOutput())
  Plot(MouseX(),MouseY(),RGB(255,0,255))

StopDrawing()


FlipBuffers()

ExamineKeyboard()
Until KeyboardPushed(1)
End




Und es klappt immer noch nicht:( Was ist da denn nun falsch:(
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Blitz Basic Funktionen in PB

Beitrag von Kiffi »

NathanielBlack hat geschrieben:Und es klappt immer noch nicht:( Was ist da denn nun falsch:(
es wäre IMO schon mal ein guter Ansatz, die Abfrage der
Mauskoordinaten sowie des Buttons in die Eventschleife
zu nehmen, anstatt sie nur einmal am Programmstart
durchzuführen.

Grüße ... Kiffi
a²+b²=mc²
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in PB

Beitrag von NathanielBlack »

und dann:D
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Blitz Basic Funktionen in PB

Beitrag von Kiffi »

NathanielBlack hat geschrieben:und dann:D
joh, keine Ahnung. Bin App-Entwickler und kein GFX & Co - Progger.

Das müssten Dir schon die Experten sagen (die scheinen momentan
aber alle ihren Rausch auszuschlafen).

Immerhin hast Du nun schon mal zwei dicke Klopper weniger in
Deinem Code. ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Shadow-Gamer
Beiträge: 152
Registriert: 06.09.2009 13:31
Computerausstattung: NB: Intel P8700, Mobility ATI HD4650, 4GB, Win 7

Re: Blitz Basic Funktionen in PB

Beitrag von Shadow-Gamer »

habs mal verbessert

Allerdings hab ich keine Ahnung warum du

Code: Alles auswählen

Select Button(500,100,100,20,"Ende")
  Case 0
nimmst, aber vielleicht hast du noch etwas vor

Code: Alles auswählen

EnableExplicit
InitSprite()
InitMouse()
InitKeyboard()

OpenScreen(800,600,16,"Buttons by NathanielBlack")

Global Button
Global mb1
Global mx
Global my

Procedure Button(x,y,w,h,text$)
  ExamineMouse()
  StartDrawing(ScreenOutput())
    Box(x,y,w,h,RGB(255,255,255))
    DrawText(x,y,text$)
  StopDrawing()
  If mx > x And mx < x + w And my > y And my < y + h 
      Button = 2
    If mb1 = 0:Else 
      Button = 1
    EndIf 
  Else 
    Button = 0  
  EndIf
EndProcedure

Repeat
ClearScreen(RGB(0,0,0))
ExamineMouse()
mx = MouseX()
my = MouseY()
mb1 = MouseButton(1)

Select Button(500,100,100,20,"Ende")
  Case 0

Select Button
  Case 2
   StartDrawing(ScreenOutput())
     DrawText(0,0,"Maus ist im Button")
   StopDrawing()
  Case 1
   End
EndSelect
EndSelect

StartDrawing(ScreenOutput())
  Plot(MouseX(),MouseY(),RGB(255,0,255))

StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(1)
End
Ich versuche ja nicht faul zu sein. :)
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in PB

Beitrag von NathanielBlack »

Wow, thank you!

Ich mach mich Bett ready, aber danke!!!
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Blitz Basic Funktionen in PB

Beitrag von Andesdaf »

NathanielBlack hat geschrieben:Und es klappt immer noch nicht:( Was ist da denn nun falsch:(
Ich bezog mich auf ts-softs Post, als du deine Frage hinterher gestellt
hast, dachte ich, die Frage bezieht sich auf EnableExplicit :wink:
Win11 x64 | PB 6.20
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in PB

Beitrag von NathanielBlack »

Ich versuche grade eine Tilemap zu bauen, doch scheinbar hab eich das was falsch gemacht. Es wäre nett, wenn mich jemand vebessern würde;)
Hier der Code:

Code: Alles auswählen

InitSprite()

OpenScreen(800,600,16,"Tilemap")

Dim MAPinit.f(5,1)



For i = 1 To 2
  LoadSprite(i,"tile"+ Str(i) + ".png")
Next


MAPinit(0,0) = 1
MAPinit(1,0) = 1
MAPinit(2,0) = 1
MAPinit(3,0) = 1
MAPinit(4,0) = 1
MAPinit(5,0) = 1
MAPinit(0,1) = 2
MAPinit(1,1) = 2
MAPinit(2,1) = 2
MAPinit(3,1) = 2
MAPinit(4,1) = 2
MAPinit(5,1) = 2



    StartDrawing(ScreenOutput())
For x = 0 To 5
  For y = 0 To 1
      DisplaySprite(MAPinit(x,y),x,y)

  Next
Next
    StopDrawing()


FlipBuffers()

Delay(3000)

Vielleicht habe ich das System noch nicht ganz verstanden:(

Danke im Vorraus,
NathanielBlack

edit:
So geht es ohne Error, es wird aber nichts angezeigt:(:

Code: Alles auswählen

InitSprite()

OpenScreen(800,600,16,"Tilemap")

Dim MAPinit.f(5,1)



For i = 1 To 2
LoadImage(i,"tile"+ Str(i) + ".png")
Next


MAPinit(0,0) = 1
MAPinit(1,0) = 1
MAPinit(2,0) = 1
MAPinit(3,0) = 1
MAPinit(4,0) = 1
MAPinit(5,0) = 1
MAPinit(0,1) = 2
MAPinit(1,1) = 2
MAPinit(2,1) = 2
MAPinit(3,1) = 2
MAPinit(4,1) = 2
MAPinit(5,1) = 2



    StartDrawing(ScreenOutput())
For x = 0 To 5
  For y = 0 To 1
      DrawImage(MAPinit(x,y),x,y)

  Next
Next
    StopDrawing()


FlipBuffers()

Delay(3000)
Antworten