Bildschirm teilen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Schraube

Betreff: Bildschirm teilen

BeitragMi, Nov 10, 2004 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
hab erst seit ein paar Tagen angefangen zu programmieren.
Hab folgendes Problem.
Ich möchte den Bildschirm teilen, aber irgendwie sind die Körper dann an anderer Stelle und nicht mehr symetrisch.
plz help

Graphics 1024, 768
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls
For x=0 To 0
For y=0 To 1
Origin x*562, y*384

;Sonne
Color 255,255,0
Oval 800, 50, 50, 50

;Boden
Color 0,127,0
Rect 0,350,1024,66

;Haus
Color 240,127,240
Rect 110,300,200,100

;Bäume
Color 40,40,40
Rect 700,250,20,200
Rect 900,230,20,240

;Baumkronen
Color 127,127,0
Oval 660,250,100,100
Color 180,100,0
Oval 860,230,100,10



Next
Next
Flip
WaitKey


Thx im Vorraus
Das Leben ist hart, aber fair!

Twit

BeitragMi, Nov 10, 2004 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ä die schleife mit x siht nutzlos aus. und wo teilst du denn den bildschirm Question
 

getlose

BeitragMi, Nov 10, 2004 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht mehr symetrisch ??

das was du da hinzeichnest ist nur einfach etwas
zu groß als das es komplett in das fenster passen würde.
 

Schraube

BeitragMi, Nov 10, 2004 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum zu groß??
Ich will ein Fenster oben und das andere unten haben, also müsste ich ja nur den 2.Wert von den Körpern verändern, was ich auch gemacht habe, oder???
Das Leben ist hart, aber fair!

eXceptION

BeitragMi, Nov 10, 2004 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hebe mal die bäume ein bisschen, so dass die oberen den unteren nicht überlagern... Smile
Norweger...

Spreche aber verdammt gut 8086
 

BlitzBirne

BeitragMi, Nov 10, 2004 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Frage, meinst du mit symmetrisch, das das untere Halbbild auf dem Kopf stehen soll ?

@Twit:
Er "teilt" den bildschirm mit "Origin", so wie ich das sehe.
Das ist zwar nicht "real" aber auch erstmal... egal Wink

Hubsi

BeitragMi, Nov 10, 2004 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht ob ich Dich richtig verstanden habe, aber vielleicht hilft dir ViewPort weiter.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

BlitzBirne

BeitragDo, Nov 11, 2004 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab nochmal das Problem genauer angesehen. Hab das erst wohl falsch verstanden mit symmetrisch.

Vielleicht hilft dir das etwas:

Code: [AUSKLAPPEN]
Graphics 1024, 768
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls
;
; HH heisst Halbe höhe, also 768 / 2 = 384
;
For HH = 0 To 384 Step 384 ;<-- HH ist 1x Null, danach 384, was beim 2. mal das Bild um 384 Pixel nach unten versetzt.
   ;Sonne
      Color 255,255,0
      Oval 800, 50+HH, 50, 50 ; <-- Hier z.B. wird 1x Null und beim 2. Durchlauf 384 hinzuaddiert.

   ;Boden
      Color 0,127,0
      Rect 0,350+HH,1024,66

   ;Haus
      Color 240,127,240
      Rect 110,300+HH,200,100

   ;Bäume
      Color 40,40,40
      Rect 700,250+HH,20,200
      Rect 900,230+HH,20,240

   ;Baumkronen
      Color 127,127,0
      Oval 660,250+HH,100,100
      Color 180,100,0
      Oval 860,230+HH,100,10
Next

Flip

WaitKey



Man kann es auch anders machen, aber ich wollte nicht zu weit ausholen, und habe deshalb eine For - Schleife dringelassen.
Das Origin kann man sich (für diesen Zweck) so schenken.
Du brauchst jetzt nurnoch dafür sorgen, das das ERSTE Bild nicht über die Bildschirmmitte hinausgeht (Vertikal), indem du die Positionen der Objekte noch anpasst - DANN sollte es auch Symmetrisch sein Smile

MfG.
 

walski

Ehemaliger Admin

BeitragDo, Nov 11, 2004 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Origin Lösung sollte ja eigentlich ohne Probleme funktionieren, nur ist wie gesagt das was du da zeichnest einfach zu groß!

Hier ein kleines Bild:

user posted image

Ich hoffe es verdeutlicht die Sache etwas:

Schwarz umrahmt: Der Bildschirm

Grüne Linie: Die Mittellinie des Bildschirms

Rot umrahmt: Dein gezeichneter Kram ( er geht über die Mittellinie hinaus! )

Blau umrahmt: Dein gezeichneter Kram zur Mitte verschoben ( da der eigentliche Kram schon höher als ein halber Bildschirm ist, wird nun sowohl der untere Teil vom roten überzeichnet, als auch der blaue Teil gar nicht mehr ganz dargestellt, da er ja höher als Bildschirm / 2 ist, aber bei Bildschirm / 2 seine 0 y-Koordinate hat )

öhhh, ich wahrscheinlich verwirrt das nur, naja egal Wink

Sorg halt einfach dafür, dass das was du zeichnest maximal HöheDesBildschirms / 2 hoch ist und alles ist gut Smile

walski
buh!
 

Schraube

BeitragDo, Nov 11, 2004 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx an euch. Ich habe das jetzt so verschoben, dass es wieder normal aussieht.

Graphics 1024, 768
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls
For x=0 To 0
For y=0 To 1
Origin x*562, y*384

;Sonne
Color 255,255,0
Oval 800, 50, 50, 50

;Boden
Color 0,127,0
Rect 0,350,1024,66

;Haus
Color 240,127,240
Rect 110,250,200,100


;Bäume
Color 40,40,40
Rect 700,150,20,200
Rect 900,110,20,240

;Baumkronen
Color 127,127,0
Oval 660,110,100,100
Color 180,100,0
Oval 860,70,100,100




Next
Next
Flip
WaitKey




PS:
@Blitzbirne: Dein Vorschlag hat leider nicht geklappt.
Das Leben ist hart, aber fair!
 

David

BeitragDo, Nov 11, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

For x=0 To 0


Hat das eine tiefere Bedeutung? Oder was versuchst du damit zu bezwecken?

grüße
http://bl4ckd0g.funpic.de
 

BlitzBirne

BeitragDo, Nov 11, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... ich habe mich nochmal drangesetzt, und die Positionen etwas angepasst.
(Was du im obrigen Programm eigentlich noch -->selbst<-- machen solltest Wink )

Wie ist es denn damit:
Code: [AUSKLAPPEN]
Graphics 1024, 768
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls
;
; HH heisst Halbe höhe, also 768 / 2 = 384
;
For HH = 0 To 384 Step 384
   ;Sonne
      Color 255,255,0
      Oval 800, 50+HH, 50, 50

   ;Boden
      Color 0,127,0
      Rect 0,318+HH,1024,66

   ;Haus
      Color 240,127,240
      Rect 110,260+HH,200,100

   ;Bäume
      Color 40,40,40
      Rect 700,210+HH,20,160
      Rect 900,190+HH,20,160

   ;Baumkronen
      Color 127,127,0
      Oval 660,210+HH,100,100
      Color 180,100,0
      Oval 860,190+HH,100,10
Next

Flip

WaitKey

eXceptION

BeitragDo, Nov 11, 2004 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso musst er auf origin verzichten?
Norweger...

Spreche aber verdammt gut 8086
 

BlitzBirne

BeitragDo, Nov 11, 2004 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Muss er nicht, er kann. Wollte damit nur zeigen, das es auch ohne geht. Smile

Ob ich das Koordiantensystem verschiebe um an einer anderen stelle zu malen,
oder ob man den Objekten gleich andere Positionen gibt, macht in seinem Programm keinen wirklichen Unterschied.

Das was mit Origin eingestellt wurde, bezieht sich zudem auf alle nachfolgenden Grafikbefehle.
Könnte ein Fallstrick werden, wenn man nicht aufpasst...

Und was er mit Bildschirm aufteilen meinte, denke ich einfach nur das 2x das selbe Bild untereinander sein soll,
und nicht, das der Bildschirmbereich selbst geteilt werden sollte.
(jedenfalls habe ich es so aufgefaßt)


MfG
 

Schraube

BeitragFr, Nov 12, 2004 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja mit Bildschirm teilen, meinte ich ein Bild oben und das andere unten.
Das mit dem for x = 0 to 0 hab ich bloß so gemacht, weil im Buch von Rene Meyer der Bildschirm vierfachgeteilt wird und ich es aber bloß zweimal haben wollte, deswegen habe ich mal ein bisschen rumprobiert und so hatte es dann funktioniert
Das Leben ist hart, aber fair!
 

Schraube

BeitragSo, Nov 14, 2004 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Will nicht extra neues Thema erstellen.
Wie bekomme ich denn bei einem Quiz hin, dass nicht die Fragen immer weiter runterrutschen, sondern die alte vom Bildschirm gelöscht und die neue wieder ganz oben steht hin?
So sind die Fragen aufgebaut:


Print "1. Frage(Sehr Leicht): Welche Insel gehört nicht zu Europa?"
Print "1 - Lanzarote"
Print "2 - Madeira"
Print "3 - Mauritius"
Print "4 - Färöer"
Antwort = Input("Was denken Sie? ")
If Antwort = 1 Then Print "Falsch, denn Lanzarote gehört zu den Kanaren, welche zu Europa gehören. Noch ein Versuch"
If Antwort = 2 Then Print "Falsch, denn Madeira gehört zu Portugal. Noch ein Versuch"
If Antwort = 3 Then Print "Richtig, Mauritios liegt nämlich im Indischen Ozean."
If Antwort = 4 Then Print "Falsch, denn die Färöer liegen zwischen Island und Großbritanien. Noch ein Versuch!"

;
;Töne
;
If Antwort = 1 Then kanal1 = PlaySound(ton4)
If Antwort = 2 Then kanal1 = PlaySound(ton4)
If Antwort = 3 Then kanal1 = PlaySound(ton5)
If Antwort = 4 Then kanal1 = PlaySound(ton4)


WaitKey


Print " "
Print " "

If Antwort = 1 Then Goto marke
If Antwort = 2 Then Goto marke
If Antwort = 4 Then Goto marke



MfG
Schraube
Das Leben ist hart, aber fair!

eXceptION

BeitragSo, Nov 14, 2004 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst CLS benutzen...
Norweger...

Spreche aber verdammt gut 8086
 

Schraube

BeitragSo, Nov 14, 2004 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das nach waitkey eingesetzt, bloß dann ist zwar die vorige Frage verschwunden, aber er macht trotzdem unter der vorhergehenden weiter.
Das Leben ist hart, aber fair!

simi

BeitragSo, Nov 14, 2004 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dier mal den Befehl Locate an....
 

Schraube

BeitragSo, Nov 14, 2004 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie setzte ich locate bei meinem bsp ein?
Das Leben ist hart, aber fair!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group