Locate in BasicPlus

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

neolein

Betreff: Locate in BasicPlus

BeitragFr, Nov 02, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

gerade habe ich BlitzPlus instaliert und versucht einen Code, den ich in BlitzBasic (Demo) erstellt habe auszuführen:

Code: [AUSKLAPPEN]
;sound = LoadSound("abletonLive.wav")
;kanal = PlaySound(sound)
;ChannelVolume kanal, 0.5

Cls


Repeat

Cls
Graphics 800, 600, 16, 3
Color 10, 30, 5 ;grün
Rect 0,0,800,600,1 ;grüner Hintergrund

Courier = LoadFont("Courier",20)
SetFont Courier



Color 200, 200, 200 ;grün


Line 250,100,50,400
Line 250,100,450,400
Line 50,400,450,400



Text 120,230,"a"
Text 370,230,"c"
Text 250,410,"b"


Text 245,70,"x="
Text 35,400,"y="
Text 450,400,"z="

Courier = LoadFont("Courier",15)
SetFont Courier


Text 10,570,"Copyright CS, 29.10.2007"




Courier = LoadFont("Courier",19)
SetFont Courier

Text 20,20,"Die Werte an den Seitenkanten a, b und c sind vorgegeben."
Text 20,40,"Die Summe zweier Ecken muß den Wert der Kante dazwischen ergeben."
Text 20,60,"Also:"
Text 20,100,"a=x+y"
Text 20,120,"b=y+z"
Text 20,140,"c=z+x"


Input$=a$

Text 460,100, "1. Bitte a eingeben: " : Locate 650,100 : a$= Input (a)
Text 160,250,a

Text 460,120, "2. Bitte b eingeben: " : Locate 650,120 : b$= Input (b)
Text 250,370,b

Text 460,140, "3. Bitte c eingeben: " : Locate 650,140 : c$= Input (c)
Text 330,260,c

Text 460,180,"4. Drück 'ne Taste für die Lösung"


WaitKey()

FlushKeys()


d#=a
e#=b
f#=c

x#=(d+f-e)/2
y#=(d+e-f)/2
z#=(e+f-d)/2


Locate 270,72
Print x#


Locate 60,402
Print y#


Locate 475,402
Print z#

Repeat

Text 460,220,"5. Exit=   ESC oder Rechtsklick"
Text 460,250,"6. Nochmal=Leertaste oder Linksklick"

If MouseHit(2) Or KeyHit(1) End


Until MouseHit(1) Or KeyHit(57)


FlushKeys()


a=""
b=""
c=""


Forever












            


muss man Locate als Funktion definieren? bzw. welche der Befehle lassen sich nicht in BP ausführen.
Danke
Christian

Hip Teen

BeitragFr, Nov 02, 2007 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
In Blitzplus gibt es den Befehl Locate nicht mehr. Benutz statt Locate und Print einfach Text.
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

flona

BeitragFr, Nov 02, 2007 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Locate und noch ein paar andere Befehle gibt es in BlitzPlus nicht. Wink
*edit* Wieso bin ich immer zu langsam?
 

neolein

BeitragFr, Nov 02, 2007 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, das war schnell, wo finde ich die nicht mehr auszuführenden Befehle? unter Help, jedenfalls sind beide noch aufgeführt, schon merkwürdig.
Nochmal Danke

flona

BeitragFr, Nov 02, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Klick mich
Alle Befehle hinter denen ein rotes Sternchen ist sind solche.
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit
 

neolein

BeitragFr, Nov 02, 2007 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Jau danke, allerdings funktioniert nun gar nix mehr, die Beispielprogrammcodes schon, aber wenn ich irgendetwas eingebe und sei es nur ein CLS dann gibt Windows eine Fehlermeldung raus, oder BP versucht zu compilieren und der PC stürzt ab, installiertz ist die Version 1.11, ich hab sie vorhin gekauft und zum Download bekommen, aber die müßte doch auf WIN XP laufen!???
Danke, Christian
 

neolein

BeitragFr, Nov 02, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun auch nach dem update auf 1.44 besteht das Problem, es gibt ein Problem (sagt Windoof) und das Programm muss beendet werden Sad mir ist völlig unklar warum

D2006

Administrator

BeitragFr, Nov 02, 2007 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
schalt doch mal den Debugger ein und erzähl uns, was der dazu meint.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

neolein

BeitragSa, Nov 03, 2007 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe den Debugger eingeschaltet "Invalid Blitz2D Buffer handle", aber das vorgestellte Programm läuft ja in Blitz2D Demo.
Die Meldunk kommt, wenn ein neues Fenster aufgeht mit dem Code, dann ist "Cls" am Anfang markiert.

Vielleicht könnt ihr den Code ja mal in euer BlitzPlus übertragen und mir sagen ob es bei euch funktioniert.

Achso und zu "Locate", den Befehl habe ich benutzt, damit der Cursor zur Eingabe an der Stelle steht, wo ich die Zahlen hinschreibe, wenn ich Locate weglasse, dann steht der Corsor oben links in der Ecke.

Code: [AUSKLAPPEN]


;sound = LoadSound("abletonLive.wav")
;kanal = PlaySound(sound)
;ChannelVolume kanal, 0.5

Cls


Repeat

Cls
Graphics 800, 600, 16, 3
Color 10, 30, 5 ;grün
Rect 0,0,800,600,1 ;grüner Hintergrund

Courier = LoadFont("Courier",20)
SetFont Courier



Color 200, 200, 200 ;grün


Line 250,100,50,400
Line 250,100,450,400
Line 50,400,450,400



Text 120,230,"a"
Text 370,230,"c"
Text 250,410,"b"


Text 245,70,"x="
Text 35,400,"y="
Text 450,400,"z="

Courier = LoadFont("Courier",15)
SetFont Courier

Text 10,550,"Nach einer Idee von Ulf Kliemke"
Text 10,570,"Copyright CS, 29.10.2007"




Courier = LoadFont("Courier",19)
SetFont Courier

Text 20,20,"Die Werte an den Seitenkanten a, b und c sind vorgegeben."
Text 20,40,"Die Summe zweier Ecken muß den Wert der Kante dazwischen ergeben."
Text 20,60,"Also:"
Text 20,100,"a=x+y"
Text 20,120,"b=y+z"
Text 20,140,"c=z+x"


Input$=a$

Text 460,100, "1. Bitte a eingeben: " : a$= Input (a)
Text 160,250,a

Text 460,120, "2. Bitte b eingeben: " : b$= Input (b)
Text 250,370,b

Text 460,140, "3. Bitte c eingeben: " : c$= Input (c)
Text 330,260,c

Text 460,180,"4. Drück 'ne Taste für die Lösung"


WaitKey()

FlushKeys()


d#=a
e#=b
f#=c

x#=(d+f-e)/2
y#=(d+e-f)/2
z#=(e+f-d)/2


Text 270,72,x#


Text 60,402,y#


Text 475,402,z#

Repeat

Text 460,220,"5. Exit=   ESC oder Rechtsklick"
Text 460,250,"6. Nochmal=Leertaste oder Linksklick"

If MouseHit(2) Or KeyHit(1) End


Until MouseHit(1) Or KeyHit(57)


FlushKeys()


a=""
b=""
c=""


Forever

 

Marek

BeitragSa, Nov 03, 2007 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, als erstes mal: Code immer einrücken! Also so:
Code: [AUSKLAPPEN]

Print "Hallo"
Repeat
       a=Input("bla:")
       If a="End" then
              Print "Beenden..."
              WaitKey
              End
       Endif
Until Keydown(1)
End


Dann wäre da noch das Graphics in der Hauptschleife. Dass kann raus. Graphics wird nur ein mal beim Programmstart aufgerufen.

Und nun zum eigentlichen Problem: In Blitz3D funktioniert alles! Es gibt jetzt noch folgende Fehlerquellen, die als Fehler für den Blitz2D-Demo-Compiler in Frage kommen:

Es wurde noch kein Graphics Befehl vor dem Cls aufgerufen (Graphics steht wirklich ganz am Anfang. Im Normalfall brauch man das nicht nochmal aufzurufen...)

Es fehlt ein SetBuffer BackBuffer() bzw. SetBuffer FrontBuffer().
Ich weiß nicht genau, ob das die Fehler verhindert. Aber das wären die Beiden eizigen logishen Fehlerquellen.

MfG Marek

~Edit~
Probiers mal so:
Code: [AUSKLAPPEN]

;sound = LoadSound("abletonLive.wav")
;kanal = PlaySound(sound)
;ChannelVolume kanal, 0.5
Graphics 800, 600, 16, 3
SetBuffer FrontBuffer()
ClsColor 10, 30, 5 ;Das setzt die Löschfarbe von Cls


Repeat
   
   Cls
   
   Courier = LoadFont("Courier",20)
   SetFont Courier
   
   
   
   Color 200, 200, 200 ;grün
   
   
   Line 250,100,50,400
   Line 250,100,450,400
   Line 50,400,450,400
   
   
   
   Text 120,230,"a"
   Text 370,230,"c"
   Text 250,410,"b"
   
   
   Text 245,70,"x="
   Text 35,400,"y="
   Text 450,400,"z="
   
   Courier = LoadFont("Courier",15)
   SetFont Courier
   
   Text 10,550,"Nach einer Idee von Ulf Kliemke"
   Text 10,570,"Copyright CS, 29.10.2007"
   
   
   
   
   Courier = LoadFont("Courier",19)
   SetFont Courier
   
   Text 20,20,"Die Werte an den Seitenkanten a, b und c sind vorgegeben."
   Text 20,40,"Die Summe zweier Ecken muß den Wert der Kante dazwischen ergeben."
   Text 20,60,"Also:"
   Text 20,100,"a=x+y"
   Text 20,120,"b=y+z"
   Text 20,140,"c=z+x"
   
   
   Input$=a$
   
   Text 460,100, "1. Bitte a eingeben: " : a$= Input (a)
   Text 160,250,a
   
   Text 460,120, "2. Bitte b eingeben: " : b$= Input (b)
   Text 250,370,b
   
   Text 460,140, "3. Bitte c eingeben: " : c$= Input (c)
   Text 330,260,c
   
   Text 460,180,"4. Drück 'ne Taste für die Lösung"
   
   
   WaitKey()
   
   FlushKeys()
   
   
   d#=a
   e#=b
   f#=c
   
   x#=(d+f-e)/2
   y#=(d+e-f)/2
   z#=(e+f-d)/2
   
   
   Text 270,72,x#
   
   
   Text 60,402,y#
   
   
   Text 475,402,z#
   
   Repeat
      
      Text 460,220,"5. Exit=   ESC oder Rechtsklick"
      Text 460,250,"6. Nochmal=Leertaste oder Linksklick"
      
      If MouseHit(2) Or KeyHit(1) Then End
      
      
   Until MouseHit(1) Or KeyHit(57)
   
   
   FlushKeys()
   
   
   a=""
   b=""
   c=""
   
   
Forever
Wer lesen kann ist klar im Vorteil...
 

neolein

BeitragSa, Nov 03, 2007 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Marek,

Danke, also ich habe deinen Code in BPlus einegfügt, nach Ausführung wird der Bildschirm schwarz und nix passiert, Nach Aufruf des Task Managers steht da, daß es weder vom BB Compiler, noch vom BB Debugger eine Rückmeldung gibt.
Nach schließen der beiden Anwendungen ist es nicht einmal mehr möglich überhaupt ein Programm auszuführen, irgendwas ist da ganz faul, sämtliche Beispiele, die mitgeliefert werden funktionieren.
Ich kann nur nochmal versuchen die alte Demo Version zu deinstallieren, weiß auch nicht wieso, keine Ahnung, was ich sonst nocht versuchen kann.
 

Dreamora

BeitragSa, Nov 03, 2007 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ist nichts faul

Dein Code kann nicht funktionieren, du rufs CLS auf bevor Graphics überhaupt existiert, was natürlich nicht geht, da CLS einen bestehenden BUFFER löscht.

Und obiger Code ist auch nur bedingt sinnvoll. Die Anwendung reagiert eigentlich schon aber wegen der genial blöden Idee, Input in die hauptschleife zu packen tut sie rein garnichts solange du nichts eingibst und wenn eine Anwendung für 15s steht wird von Windows angenommen das sie nimmer reagiert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

D2006

Administrator

BeitragSa, Nov 03, 2007 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Alle "Load" Befehle raus aus der Hauptschleife! Also auch LoadFont. Sonst wird immer und immer und immer und immer und immer und immer wieder geladen, obwohl einmal laden völlig reicht.

Als nächstes ql:Input raushauen! Der Befehl ist genauso wie Print in BlitzPlus einfach zu nix zu gebrauchen, da er eine Dos-BOX öffnet. Falls du dringend eine Eingaberoutine brauchst, such im Codearchiv danach. Ich empfehle allerdings, einfach erstmal andere Sachen auszuprobieren, weil man als Anfänger eine selbstgeschriebene Eingaberoutine nicht wirklich verstehen kann.

Zuletzt hast du ql:Flip vergessen, weshalb du auch nichts siehst. Im Gegensatz zu Blitz2D oder Blitz3D wird bei BlitzPlus immer DoubleBufferin benutzt, dass heißt du musst auch immer erst die Buffer flippen, bevor du was siehst.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

neolein

BeitragSa, Nov 03, 2007 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, hat mir sehr geholfen, daß es so kompliziert werden würde von BB nach BP hatte ich nicht gehofft.
Ich habe den Code soweit umgeschrieben, daß (fast) Alles möglich ist, das Problem mit der Eingabe besteht weiterhin, ich habs mal mit GetKey() probiert, jedoch stimmt dann das Ergebnis nicht, ich denke über den Befehl komme ich eh nicht weiter.
So siehts jetzt aus:

Code: [AUSKLAPPEN]

;sound = LoadSound("abletonLive.wav")
;kanal = PlaySound(sound)
;ChannelVolume kanal, 0.5


Graphics 800,600,16,2
Color 10, 40, 5 ;grün
Rect 0,0,800,600,1

SetBuffer BackBuffer()

Color 200, 200, 200 ;grün


;das Dreieck
Line 250,100,50,400
Line 250,100,450,400
Line 50,400,450,400


;die Seiten
Text 120,230,"a"
Text 370,230,"c"
Text 250,410,"b"


;die Ecken
Text 245,70,"x="
Text 35,400,"y="
Text 450,400,"z="


;Fußnote
Text 10,550,"Nach einer Idee von "
Text 10,570,"Copyright CS, 29.10.2007"


;Überschrift
Text 20,20,"Die Werte an den Seitenkanten a, b und c sind vorgegeben."
Text 20,40,"Die Summe zweier Ecken muß den Wert der Kante dazwischen ergeben."
Text 20,60,"Also:"
Text 20,100,"a=x+y"
Text 20,120,"b=y+z"
Text 20,140,"c=z+x"



Repeat



   Text 460,100, "1. Bitte a eingeben: "
   
Flip


      While Not a
         a=GetKey()
      Wend
   Text 160,260,a-48

      a=a-48
      x#=(a+c-d)/2

   
   Text 460,120, "2. Bitte b eingeben: "
Flip   
   
      While Not b
         b=GetKey()
      Wend
   Text 250,370,b-48

      b=b-48
      y#=(a+b-c)/2


   Text 460,140, "3. Bitte c eingeben: "
Flip   
   
      While Not c
         c=GetKey()
      Wend
   Text 330,260,c-48
   
      c=c-48
      z#=(b+c-a)/2

   
   Text 460,180,"4. Drück 'ne Taste für die Lösung"


Flip

      WaitKey()

      ;FlushKeys()


   Text 270,72,x#
   Text 60,402,y#
   Text 475,402,z#
   
Flip 
         
         Repeat

            Text 460,220,"5. Exit=   ESC oder Rechtsklick"
            Text 460,250,"6. Nochmal=Leertaste oder Linksklick"

            If MouseHit(2) Or KeyHit(1) End


         Until MouseHit(1) Or KeyHit(57)      




      FlushKeys()


a=""
b=""
c=""


Forever

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group