[HILFE]QuickBasic Code übersetzen 'InBetween'

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

[HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von Mijikai »

Brauche Hilfe beim Übersetzen von QuickBasic code. :coderselixir:

Code:

Code: Alles auswählen

' Returns 0 if on line, negative for left, positive for right
DEF FNib(a0,a1,b0,b1) = (a0 < b1) AND (a1 > b0)
Wie würde das in PureBasic aussehen (Macro)?
Benutzeravatar
mk-soft
Beiträge: 3844
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von mk-soft »

Mal testen...

Code: Alles auswählen

; Returns 0 If on line, negative For left, positive For right
; DEF FNib(a0,a1,b0,b1) = (a0 < b1) And (a1 > b0)

Macro FNib(a0,a1,b0,b1)
  Bool((a0 < b1) And (a1 > b0))
EndMacro
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von DarkDragon »

Aber der Kommentar darüber sagt eigentlich was anderes als der Code. Ist das nun eher so gemeint wie im Code oder eher wie im Kommentar?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von Mijikai »

DarkDragon hat geschrieben:Aber der Kommentar darüber sagt eigentlich was anderes als der Code. Ist das nun eher so gemeint wie im Code oder eher wie im Kommentar?
Der Code ist ok.
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von Imhotheb »

gibt bool() auch negativ aus?
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
mk-soft
Beiträge: 3844
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von mk-soft »

Nein.

Bool(Assert) gibt immer nur #True (1) oder #False (0) zurück...
Somit kann man auch rechnen.

Code: Alles auswählen

Define r1, r2
Define val1, val2

val1 = 10
Val2 = 20

r1 = 100 * Bool(val1 < val2)
r2 = 1000 * Bool(val1 > val2)

Debug "r1 = " + r1
Debug "r2 = " + r2
:wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von Imhotheb »

Danke für die Aufklärung ... eigentlich sollte das hauptsächlich als Denkanstoß gelten ... da im Kommentar vermerkt ist: "negativ für links"
weil einfach einfach einfach ist ... mach' ich es anders
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von Derren »

Imhotheb hat geschrieben:Danke für die Aufklärung ... eigentlich sollte das hauptsächlich als Denkanstoß gelten ... da im Kommentar vermerkt ist: "negativ für links"
Ich verstehe den Code/Kommentar auch nicht.
Offenbar soll geprüft werden, ob ein Punkt auf irgendeiner Linie liegt ("0 if on line"). Aber erstens reicht es dann nicht aus zu prüfen ob die Koordinaten dazwischen liegen, zweitens würde man dafür 3 Punkte benötigen. Zwei Punkte, die die Linie definieren und dann der zu testende Punkte.
Und drittens, und das ist das komische, werden offenbar x-Werte von A mit y-Werten von B verglichen.

Wenn ich jetzt keinen kompletten Denkfehler habe, dann demonstriert dieser Code hier alle "validen" Punkte A, für die der Code "true" ausspucken würde, wenn B an der Position des Cursors ist.

Code: Alles auswählen

OpenWindow(0,0,0,400,400,"inbetween?",#PB_Window_SystemMenu)
CanvasGadget(0,0,0,400,400)

Repeat
	e=WaitWindowEvent()
	If e=#PB_Event_Gadget
		If EventGadget()=0
			If EventType()=#PB_EventType_MouseMove

				StartDrawing(CanvasOutput(0))				
				Box(18,18,364,364,$000000)
				Box(20,20,360,360,$FFFFFF)

				For a0 = -180 To 180
					For a1 = -180 To 180
						
						b0=GetGadgetAttribute(0, #PB_Canvas_MouseX)
						b1=GetGadgetAttribute(0, #PB_Canvas_MouseY)						
						
						If a0<b1 And a1>b0 ;Hier die Prüfung "FNib"
							
							x=a0
							y=a1
							
							Plot(x+200, 200-y, RGBA(255,0,0,50)  )
						EndIf						
					Next
				Next				
				
				Line(199,0,1,400,$000000):Line(200,0,1,400,$000000)
				Line(0,199,400,1,$000000):Line(0,200,400,1,$000000)
				
				StopDrawing()
				
			EndIf 
		EndIf 
	EndIf 	
Until e=#PB_Event_CloseWindow
End 
Signatur und so
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: [HILFE]QuickBasic Code übersetzen 'InBetween'

Beitrag von GPI »

kann es sein, das beim original-code a0, a1, b0,b1 keine Integer-Variablen sind, sondern klassen oder sonstiges?

Ich seh da auch keinen Sinn in den Code und wüsste auch nicht, wozu man das gebrauchen könnte. Ein dazwischen setzt bei mir eigentlich vorraus, das es ein min und max gibt und eine Testzahl. Also immer eine vielzahl von 3...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten