Krieg das Dach nicht hin?!
Übersicht BlitzBasic Beginners-Corner
Chromx3Betreff: Krieg das Dach nicht hin?! |
Sa, Feb 18, 2012 14:32 Antworten mit Zitat |
|
---|---|---|
Hey ich schon wieder:)
Ich habe im Buch ein Beispiel zu einem haus mit Wiese usw. bekommen der Code Code: [AUSKLAPPEN] Graphics 640,480 ClsColor 0,0,255 Cls ;Wiese Color 0,255,0 Rect 0,440,640,40,1 ;Sonne Color 255,255,0 Oval 500,100,50,50 ;Haus Color 0,0,127 Rect 100,290,200,150,1 For i = 0 To 100 Line 100 + i,290 - i,100,100 Next ;2 Bäume Color 50,0,0 Rect 450,320,12,120 Rect 520,330,15,110 Color 0,200,0 Oval 433,280,50,60 Oval 503,290,50,60 WaitKey Ich wollte ein Schrägdach aus einer linie machen übe grad die Korrdinaten usw. kann mir einer sagen wie ich das hinkriege probiere schon die ganze Zeit(seid Gestern Nacht) doch ich bekomme immer das was ihr ja im Bild da oben seht wie krieg ich das hin ?? Danke im vorraus! PS:Ich glaube ich werde mich öfters im Forum melden |
||
XeresModerator |
Sa, Feb 18, 2012 14:41 Antworten mit Zitat |
|
---|---|---|
Bitte benutze ein paar Satzzeichen und beschreibe dein Problem genau - aus dem Text wird nicht vollkommen klar, was das Problem ist. Ich nehme an, aus Linien kann man kein Dreieck formen, da ein paar Pixel nie abgedeckt werden.
Die sicherste Methode wäre ein Floodfill-Algorithmus, bestimmt gibt es ein Funktion dafür im Codearchiv. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Midimaster |
Sa, Feb 18, 2012 14:47 Antworten mit Zitat |
|
---|---|---|
meinst du sowas?
BlitzBasic: [AUSKLAPPEN] Line 100 + i,290,100+i,190 oder sowas: BlitzBasic: [AUSKLAPPEN] Line 100 + i,290,200,190+i spiel einfach mit den elementen herum: zieh mal irgendwo i ab, addiere woanders wieder i dazu, usw... da lernst du am meisten |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
SpionAtom |
Sa, Feb 18, 2012 16:10 Antworten mit Zitat |
|
---|---|---|
Beim Rumprobieren kriegt man oft überraschende (gute) Ergebnisse hin.
Jedoch sollte man sich auch irgendwann mal Gedanken machen, warum es funktioniert. Das Hausdach kannst du als eine Reihe von wagerechten Linien betrachten, die untereinander angeordnet sind. Es fängt mit der Spitze an (1 Pixel Breite), und mit jeder weiteren Linie, die darunter folgt, wird die Breite nach links und rechts um einen Pixel breiter. Code: [AUSKLAPPEN] -
--- ----- ------- Und das kann man mit einer Schleife realisieren: Code: [AUSKLAPPEN] Graphics 640, 480, 0, 2
SetBuffer BackBuffer() For i = 0 To 100 Line 320 - i, 200 + i, 320 + i, 200 + i Next Flip() WaitKey End Und am Ende kommt sowas bei raus: Code: [AUSKLAPPEN] Graphics 640, 480, 0, 2
SetBuffer BackBuffer() ;Hauswand Color 200, 200, 100 Rect 220, 250, 200, 150 ;Schornstein Color 100, 50, 0 Rect 350, 160, 20, 40 ;Hausdach Color 155, 55, 0 For i = 0 To 110 Line 320 - i, 150 + i, 320 + i, 150 + i Next ;Tür Color 100, 80, 60 Rect 240, 350, 40, 50 ;Fenster Color 50, 150, 255 Rect 340, 270, 60, 60 Color 150, 150, 255 Rect 345, 275, 50, 50 Color 50, 150, 255 Rect 367, 270, 6, 55 Rect 340, 297, 55, 6 Flip() WaitKey End |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
bjh |
Sa, Feb 18, 2012 16:42 Antworten mit Zitat |
|
---|---|---|
wenn die linien die mit Line gemacht werden gerade sind, sollte man Rect verwenden, weils schneller ist.
nur mal so nebenbei |
||
darth |
Sa, Feb 18, 2012 20:43 Antworten mit Zitat |
|
---|---|---|
Stimmt nur bedingt bjh.
Line mit Lockbuffer ist das schnellste, gefolgt von Rect (funktioniert nicht im Lockbuffer), abgeschlossen von Line ohne Lockbuffer. Np. |
||
Diese Signatur ist leer. |
Pokoyo |
So, Feb 19, 2012 13:15 Antworten mit Zitat |
|
---|---|---|
Hmmm, so wie ich das sehe hat bjh doch recht. Line mit Lockbuffer ist schnell aber rect mit fillparameter true ist noch n Tick schneller.
Das kommt warscheinlich aber auch auf die verwendete Grafikkarte an. Habe mal einen kleinen Vergleichstest gemacht : Code: [AUSKLAPPEN] Const screen_width = 1023
Const screen_height = 767 Graphics3D screen_width+1,screen_height+1,32,1 SetBuffer BackBuffer() Local Loops = 40 While Not KeyHit(1) ms = MilliSecs() For i=0 To Loops For y=0 To screen_height Line 0,y,screen_width,y Next Next ms2=MilliSecs()-ms Color 0,0,0 Text 1,1,"Millisekunden : "+ms2+" Line ohne Lockbuffer()" Color 255,255,255 Flip WaitKey() ms = MilliSecs() LockBuffer BackBuffer() For i=0 To Loops For y=0 To screen_height Line 0,y,screen_width,y Next Next UnlockBuffer BackBuffer() ms2=MilliSecs()-ms Color 0,0,0 Text 1,1,"Millisekunden : "+ms2+" Line mit Lockbuffer()" Color 255,255,255 Flip WaitKey() ms = MilliSecs() For i=0 To Loops For y=0 To screen_height Rect 0,y,screen_width,1 Next Next ms2=MilliSecs()-ms Color 0,0,0 Text 1,1,"Millisekunden : "+ms2+" Rect ohne Fillparameter" Color 255,255,255 Flip WaitKey() ms = MilliSecs() For i=0 To Loops For y=0 To screen_height Rect 0,y,screen_width,1,1 Next Next ms2=MilliSecs()-ms Color 0,0,0 Text 1,1,"Millisekunden : "+ms2+" Rect mit Fillparameter" Color 255,255,255 Flip WaitKey() Wend Um hier brauchbare Werte zu bekommen muss der Debugmode ausgeschaltet sein. Gruß Poko |
||
|Win10 64bit|FX 8350@4,5 GHz|Asrock 990FX Killer Fatality|16GB HyperX|R9 290X|Blitz3D|BlitzMax| |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group