Krieg das Dach nicht hin?!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Chromx3

Betreff: Krieg das Dach nicht hin?!

BeitragSa, Feb 18, 2012 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

Xeres

Moderator

BeitragSa, Feb 18, 2012 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSa, Feb 18, 2012 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 18, 2012 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 18, 2012 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn die linien die mit Line gemacht werden gerade sind, sollte man Rect verwenden, weils schneller ist.
nur mal so nebenbei Wink

darth

BeitragSa, Feb 18, 2012 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Feb 19, 2012 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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|

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group