Anfängerfrage

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2, 3  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

Mangudai

Betreff: Anfängerfrage

BeitragDi, Apr 20, 2004 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo alle miteinander

also ich hab mal versucht auch ein bissl zu programmieren, aber ich schein zu blöd dafür zu sein Rolling Eyes .
folgendes programm soll ein quadrat an der stelle zeichenen an der ich die maustaste drücke. tut es auch Laughing aber danach verschwindet es gleich wieder.is eh klar wegen dem cls. also wenn mir wer sagt wie ich anstellen muß das das ding dableibt werde ich vieleicht in ferner zukunft auch mal programierer Wink

so hier der unglaublich kompexe code an dem ich jetzt 2 tage Shocked
tüftle.


Code: [AUSKLAPPEN]

Graphics 1024,768,0,1

SetBuffer BackBuffer()
   
Repeat
x=MouseX()
y=MouseY()
Cls

If MouseHit(1) Then Rect x,y,10,10,1

Line x-5,y,x+5,y
Line x,y-5,x,y+5

Flip
Until KeyHit(1)

End


aja bitte keine negative kritik sowas vertrag ich nicht Wink

lg mangudai
 

Edlothiol

BeitragDi, Apr 20, 2004 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst speichern wo das Quadrat liegt, und ob es da ist.
Code: [AUSKLAPPEN]
Graphics 1024,768,0,1

SetBuffer BackBuffer()

Global RectX,RectY,RectVisible
   
Repeat
x=MouseX()
y=MouseY()
Cls

If MouseHit(1) Then
  RectX = x
  RectY = y
  RectVisible = True
End If

If RectVisible Then
  Rect RectX,RectY,10,10
End If

Line x-5,y,x+5,y
Line x,y-5,x,y+5

Flip
Until KeyHit(1)

End

Mangudai

BeitragDi, Apr 20, 2004 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
rectvisible = true GENIAL

danke für die schnelle hilfe Very Happy

lg mangudai

Flachzange

BeitragDi, Apr 20, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Blödsinn! Das geht auch kürzer:

Code: [AUSKLAPPEN]

Global x=-100
Global y=-100

while not keyhit(1)

if mousehit(1) then
x=MouseX()
y=MouseY()
endif

Rect x,y,10,10

wend


Da sparste ein bissl...
I'm no superman...!
  • Zuletzt bearbeitet von Flachzange am Di, Apr 20, 2004 17:30, insgesamt einmal bearbeitet

Hubsi

BeitragDi, Apr 20, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Oberblödsinn Wink So wird das Rechteck immer gezeichnet. Halt auf Koords 0,0. Aber es ist da.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Flachzange

BeitragDi, Apr 20, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
dann setzte die startkoordinaten halt auf negative werte außerhalb des sichtbaren Bereichs!
Ich hab zwar gemeckert, allerdings hab ich auch ne Alternative präsentiert. Nun, was ist mit dir, Hubsi? Oohhh... Rolling Eyes
I'm no superman...!

Travis

BeitragDi, Apr 20, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Type Box
 Field x, y, w, h, f
End Type

Graphics 800,600,16,2
Color 0,0,255

Repeat
 Cls

  ShowBox()

  Oval MouseX()-2, MouseY()-2, 4, 4, 1
  If MouseDown(1) Then Box(MouseX(), MouseY(), 100,50,1)

 Flip
Until KeyHit(1)
End

Function Box(x,y,w,h,f)
 b.box = New box
 b\x = x
 b\y = y
 b\w = w
 b\h = h
 b\f = f
End Function

Function ShowBox()
 For b.box = Each box
  Rect b\x, b\y, b\w, b\h, b\f
 Next
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Michi1988

BeitragDi, Apr 20, 2004 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Travis muss gleich übertreiben und zeigen was er kann Wink .

Er is nen Anfänger und wenn du ihn gleich mit OOP und Arreys zulaberst
liecht BB schneller wieder inner ecke als du "Michi1988 ist der weltbeste programmierer" sagen kannst.
Very Happy

Gruß
Michi

Travis

BeitragDi, Apr 20, 2004 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed *rotwerd* dachte nur es wär'n bisschen flexibler Wink
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Michi1988

BeitragDi, Apr 20, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
*g*

Aber gut, das Beispiel von Edlothiol is schon okay für den Anfang.

@Travis
Stell dir vor, er kennst OOP und Arrays früher als den Befehl Print
  • Zuletzt bearbeitet von Michi1988 am Di, Apr 20, 2004 20:52, insgesamt einmal bearbeitet

Flachzange

BeitragDi, Apr 20, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
schießt etwas übers ziel hinaus...zuviel ballast für sein problem! aber sonst...fein fein! *g*
I'm no superman...!
 

dubitat

BeitragDi, Apr 20, 2004 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
travis wir wissen alle das du ein super programmierer bist aber immer gleich mit dem komplexesten loslegen(types)? hast doch auch nicht mit types gleich nach print gelernt oder?
Erare humanum est - Irren ist Menschlich

Michi1988

BeitragDi, Apr 20, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke an alle die Travis nun ein bissl gekitzelt haben.

Ende damit.
Danke!

Hubsi

BeitragDi, Apr 20, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Flachzange hat Folgendes geschrieben:
dann setzte die startkoordinaten halt auf negative werte außerhalb des sichtbaren Bereichs!
Ich hab zwar gemeckert, allerdings hab ich auch ne Alternative präsentiert. Nun, was ist mit dir, Hubsi? Oohhh... Rolling Eyes
Statement:
Warum mit solchem Quatsch die Performance drücken? Wenn man einem Newbie solchen Code vor die Beine wirft, wird er es nie ordentlich lernen. Ist es dann erst nicht nur mehr ein Recteck, sondern hunderte Objekte, soll er sie dann auch aus dem Sichtbereich schieben? Edlothiol hat ja eine vernünftige Methode aufgezeigt.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Mangudai

BeitragDi, Apr 20, 2004 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
hey travis das is supercool danke Smile

eigentlich wollt ich ja selber draufkommen wie ich beliebig viele rechtecke malen kann, aber wenn ich mir den code so anschaue wär ich wohl eh nie von allein drauf gekommen Laughing

@flachzange ich bin etwa hubsis meinung. was soll mir dein code bringen wenn ich ihn nicht versteh??? bist aber herzlich eingeladen mir zu erklären was das mit den negativen globalen variablen aufsich hat Smile
lg Mangudai

Flachzange

BeitragDi, Apr 20, 2004 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
*lol*
Hubsi du bist echt der Held im Erdbeerfeld! Ich wette mit dir das mein Code um einiges schneller ist als die präsentierten Alternativen! Wenn du das nicht erkennst tust du mir leid und das ist dann halt deine Verblendung bleibt dein eigenes Problem!

Also ich erkläre den Code für den lesefaulen Anfänger nochmal Wink

immer wenn im Mainloop die linke Maustaste gedrückt wird werden den Variablen X und Y die aktuellen Mauskoordinaten zugewiesen!
Anschließend wird stets das Rechteck an die aktuell gespeicherten Koordinaten gezeichnet. Easy oder?
Da ich mir jetzt aber eine If-Abfrage sparen wollte, lasse ich das Rect wenn noch keine Maustaste gedrückt wurde außerhalb des sichtbaren Bereichs zeichnen (damit anfangs noch nix zu sehn is).
Da im weiteren Verlauf des Programmes IMMER ein Rect sichtbar sein wird wäre es hirnrissig (!!!) Performance an eine weitere If-Abfrage zu verschwenden die immer prüft ob schonmal geklickt wurde! Ist ja wohl mehr als müßig!
Letzendlich drückt Hubsis Version über längere Zeit mehr! So! Desweiteren programmiere ich immer so, dass es für das AKTUELLE Problem am effektivsten gelöst wird. Aber HIER gehts halt nur um ein Rechteck und nicht um DOT 3 Lightning auf einer Mesh der Notre-Dame!

Is doch wahr!
I'm no superman...!

Hubsi

BeitragDi, Apr 20, 2004 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Überarbeitete Version: Deine Kurzsichtigkeit ist grandios. Heute zeigen wir ihm die schlechtmöglichste Lösung und morgen regen wir uns auf, weil sein Spaceshooter 2 Ghz Mindestanforderung hat Rolling Eyes
Was den unfassbaren Speedunterschied angeht:
Code: [AUSKLAPPEN]
Graphics 640,480,0,1 ; Edlothiol
SetBuffer BackBuffer()
Global RectX,RectY,RectVisible
time=MilliSecs()
For a=1 To 10000
Cls
If MouseHit(1) Then
  RectX = MouseX()
  RectY = MouseY()
  RectVisible = True
End If

If RectVisible Then
  Rect RectX,RectY,10,10
End If
Flip 0
Next
Print MilliSecs()-time
WaitKey()
End


Code: [AUSKLAPPEN]
Graphics 640,480,0,1 ; Flachzange
SetBuffer BackBuffer()
Global X=-100,Y=-100
time=MilliSecs()
For a=1 To 10000
Cls

If MouseHit(1) Then
x=MouseX()
y=MouseY()
EndIf
Rect x,y,10,10
Flip 0
Next
Print MilliSecs()-time
WaitKey()
End
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Flachzange

BeitragDi, Apr 20, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist definitiv NICHT die schlechtere Version. Nenn mich kurzsichtig, aber ich nenne dich verblendet! Im übrigen ist deine Argumentation schlichtweg Bullshit! Wenn mans mal auf den Punkt bringt versuchst du ja hier einen universelle Lösung für jedes Problem zu formulieren. Ich kann darum nur eins wiederholen: Wir zeichnen hier nur ein Rechteck! Wozu Universalismus führt, hat ja Microsoft schon eindrucksvoll gezeigt!

Vielleicht solltest du etwas ruhiger an Probleme rangehen. Denn dann schießt du zum einen nicht mit Kanonen auf Spatzen und zum anderen verzettelst du dich dann nicht in irgendeinem Gerede, dass deinen Fehler kaschieren soll.

Ich hab keinen Bock mich hier weiter über so ne Lapalie auszukotzen. Meinetwegen soll er das Ding doch mit WritePixelFast und ner Matrix für den Linienverlauf bewerkstelligen! Damit kriegt er auch ein paar DIN A4 Seiten voll! Das war doch deine Intention oder, Hubsi? Rolling Eyes

Viel Spaß beim weiteren Spammen!
I'm no superman...!
 

HOT-BIT

Gast

BeitragDi, Apr 20, 2004 23:25
Antworten mit Zitat
Hoi !

lol, das ist ja echt lustig. Aber es wiederholt sich halt alles wieder.

Warum soll es anderen anders gehen ?

@Flachzange:
Siehst du nun, wohin das führen kann ?

Ich habe das alles schon hinter mir, und werde es in der Form nicht mehr haben, denn ich helfe nur noch in Ausnahmefällen.

Mir kommt in diesem Fall vor, daß beide irgendwie Recht haben.

Toni

Hubsi

BeitragMi, Apr 21, 2004 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Gedanklich gehe ich gerade folgendes Szenario durch:

Zitat:
Flachzange: "Bei dem einen Rechteck kannst Du es immer zeichnen, auch wenn es nicht gebraucht wird."

Mangudai: "Prima! Das ist ja einfach!"

2 Monate später:

Mangudai: "Ich hab hier einen einfachen Spaceshooter zusammengeschraubt (Danke nochmal an Flachzange Wink ), aber der läuft nicht richtig unter 1,5 GHz? Was kann das sein? Hier mal der Code:

Code: [AUSKLAPPEN]
Ellenlanger, umständlicher und speedfressender Code


Flachzange: Ist doch klar! Du zeichnest alle Gegner des Levels, auch wenn man sie nicht sehen kann! Mecker, mecker...


Tja, und wenn sie nicht gestorben sind, dann coden sie noch heute. Wenn Du jetzt Dein aggressives Gehabe einstellen könntest damit das Geflame hier ein Ende findet?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gehe zu Seite 1, 2, 3  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group