 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 24.11.2008, 19:58 Titel: Zuckender Hintergrund |
|
|
Hi,
also folgendes Problem:
Ich habe das unten stehende Programm mit 2 verschiedenen screens geschrieben um nicht den Hintergrud jedes maol von grund au neu laden zu lassen. Das ganze funzt auch schon recht gut, nur das Problem ist, dass an meinenm Leistungsschwächeren Notebook der Hintergrund zuckt.
Habe auch schon einiges versucht z.B. screelock und screenunlock sowie screensync. Nu fällt mir nichts mehr ein, da ja auch schon ein sleep 200 drin steht. Hat da einer nen Tipp für mich??
Achso nicht über das aussehen des Codes bescweren der ist ja immerhin nur ein Teil des Gesamten. Und das mit den Kommentaren... Naja, war zu faul und die Zeit ist eng.
Code: | cls
dim shared as integer breite,hoehe, bildx,bildy,kont
dim shared as string wahl, rbild
screeninfo breite,hoehe
screenres breite,hoehe,32,2,&H01
declare sub mainmenue
declare sub start
declare sub bewegen
declare sub waehlen
rbild = "1"
bildx = 700
bildy = 500
start
sub start
screenset 0,1
color &H009999
' Hindernis 1
line (0,0)-(0,200)
line (0,0)-(250,0)
line (250,0)-(250,200)
line (0,200)-(250,200)
paint (150,150)
' Hindernis 2
line (250,0)-(400,0)
line (250,0)-(250,40)
line (250,40)-(400,40)
line (400,0)-(400,40)
paint (300,10)
' Hindernis 3
line (850,50)-(950,50)
line (850,50)-(850,100)
line (850,100)-(950,100)
line (950,50)-(950,100)
paint (900,75)
' Hindernis 5
circle(500,330),100,,,,,F
' Hindernis 6
line (400,500)-(700,500)
line (700,500)-(700,600)
line (700,600)-(400,600)
line (400,600)-(400,500)
paint (450,550)
' Hindernis 7
line (900,450)-(900,550)
line (900,550)-(1050,550)
line (1050,550)-(1100,450)
line (1100,450)-(900,450)
paint (950,453)
'Hindernis 9
line (breite-20,hoehe-20)-(breite-20,hoehe-80)
line (breite-20,hoehe-80)-(breite-80,hoehe-20)
line (breite-80,hoehe-20)-(breite-20,hoehe-20)
paint(breite-30,hoehe-30)
'Hindernis 10
line (breite-10,10)-(breite-60,10)
line (breite-60,10)-(breite-10,60)
line (breite-10,60)-(breite-10,10)
paint(breite-30,30)
'Hindernis
line (10,hoehe-10)-(10,hoehe-60)
line (10,hoehe-60)-(60,hoehe-10)
line (60,hoehe-10)-(10,hoehe-10)
paint(30,hoehe-30)
' Bande
line (0,0)-(breite,0)
line (0,20)-(breite,20)
line (breite,0)-(breite,20)
line (0,0)-(0,20)
paint (500,5)
line (0,0)-(0,hoehe)
line (0,hoehe)-(20,hoehe)
line (20,hoehe)-(20,0)
line (20,0)-(0,0)
paint (5,300)
line (0,hoehe-20)-(breite,hoehe-20)
line (breite,hoehe-20)-(breite,hoehe)
line (breite,hoehe)-(0,hoehe)
line (0,hoehe)-(0,hoehe-20)
paint (50,hoehe-3)
line (breite-20,0)-(breite,0)
line (breite,0)-(breite,hoehe)
line (breite,hoehe)-(breite-20,hoehe)
line (breite-20,hoehe)-(breite-20,0)
paint (breite-3,150)
paint (-1,-1)
Screenset 1,1
screencopy 0,1
bewegen
end sub
sub bewegen
do
screenlock
screencopy 0,1
if rbild = "1" then
if kont = 0 then
if point (bildx+56,bildy+9) = &H009999 then
rbild = "6"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+120,bildy+11) = &H009999 then
rbild = "5"
kont = 1
end if
end if
end if
if rbild = "2" then
if kont = 0 then
if point (bildx+23,bildy+53) = &H009999 then
rbild = "8"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+21,bildy+117) = &H009999 then
rbild = "5"
kont = 1
end if
end if
end if
if rbild = "3" then
if kont = 0 then
if point (bildx+169,bildy+58) = &H009999 then
rbild = "7"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+167,bildy+122) = &H009999 then
rbild = "6"
kont = 1
end if
end if
end if
if rbild = "4" then
if kont = 0 then
if point (bildx+53,bildy+154) = &H009999 then
rbild = "7"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+117,bildy+156) = &H009999 then
rbild = "8"
kont = 1
end if
end if
end if
if rbild = "5" then
if kont = 0 then
if point (bildx+4,bildy+46) = &H009999 then
rbild = "1"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+50,bildy+11) = &H009999 then
rbild = "2"
kont = 1
end if
end if
end if
if rbild = "6" then
if kont = 0 then
if point (bildx+131,bildy+5) = &H009999 then
rbild = "3"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+166,bildy+47) = &H009999 then
rbild = "1"
kont = 1
end if
end if
end if
if rbild = "7" then
if kont = 0 then
if point (bildx+131,bildy+157) = &H009999 then
rbild = "3"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+173,bildy+122) = &H009999 then
rbild = "4"
kont = 1
end if
end if
end if
if rbild = "8" then
if kont = 0 then
if point (bildx+24,bildy+121) = &H009999 then
rbild = "4"
kont = 1
end if
end if
if kont = 0 then
if point (bildx+59,bildy+163) = &H009999 then
rbild = "2"
kont = 1
end if
end if
end if
select case rbild
case "1"
bildx = bildx
bildy = bildy-2
case "2"
bildx = bildx-2
bildy = bildy
case "3"
bildx = bildx+2
bildy = bildy
case "4"
bildx = bildx
bildy = bildy +2
case "5"
bildx = bildx -1
bildy = bildy -1
case "6"
bildx = bildx +1
bildy = bildy -1
case "7"
bildx = bildx +1
bildy = bildy +1
case "8"
bildx = bildx-1
bildy = bildy+1
case else
Print "fehler"
end select
Dim As String dateiname = "Roboter"+rbild+".bmp"
Dim As Integer breit, hoch
Dim As Integer ff = Freefile
Open dateiname For Input As #ff
Get #ff, 19, breit
Get #ff, 23, hoch
Close #ff
Dim bild As Any Ptr
bild = ImageCreate(breit,hoch)
Bload dateiname, bild
Put (bildx,bildy), bild
If bild <> 0 Then ImageDestroy bild
if multikey(&H01) then end
if multikey(&H1E) then
bildx = 700
bildy = 500
rbild = "1"
end if
sleep 20
screenunlock
screensync
cls
kont = 0
loop
end sub
|
edit: habe auch schon versucht die Bilder am anfang zu laden und dann nur noch einzusetzen und am Schluss wieder aus dem Speicher zu löschen ... hat nich gefunzt... |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 24.11.2008, 20:18 Titel: |
|
|
Wie zuckt es denn? Meinst du ein ruckeln? |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 24.11.2008, 20:27 Titel: |
|
|
nein es ist wirklich eine Art zucken, denn der Hintergrund verschwindet immer wieder Kurz und Kommt dann wieder. Das sollte ja auch so sein allerdins sollte es halt so schnell sein, dass man es nicht mehr sieht. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 24.11.2008, 23:25 Titel: |
|
|
Hmm,
die Reihenfolge hier ist nicht gerade "ansichtsfreundlich"
Code: | ...
sleep 20 'zeige 20 ms das alte Bild
screenunlock 'Bildspeicher freigeben
screensync 'neues Bild anzeigen
cls 'sofort wieder löschen
... | siehe Beispiel:
http://forum.qbasic.at/viewtopic.php?p=75715#75715 _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 25.11.2008, 17:58 Titel: |
|
|
Thx für die Antwort, volta
ist mir auch aufgefallen und habe das mittlerweile auch abgeändert, nu bewegt sich allerdings der bewegliche Teil nicht mehr.... Bin dran, das wird schon.
Mfg
Sippo
Doch nich so einfach, ewie ich dachte... Hier mal mein Code kann mir jmd. helfen???
Bewegt sich nu doch weicht aber den Hindernissen net aus
EDIT2:
jetzt gehts!!!!!!!!!! habe einfach das zum Bild einfügen nochmal nach hinten verschoben hinter die Bedingungsabfrege. ich mach mal den Code raus, der is einfach zu lang, wer den trotzdenm will soll mich pls anschreiben. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 25.11.2008, 21:17 Titel: |
|
|
Fürs nächste Mal: Längere Codes kannst du auch gern auf dem NoPaste-System des FreeBasic-Portals hochladen.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|