Español
Fuente/ Codesnippets

Animationen Erstellen

 

KompilierenMarcaSeparación
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Animationen erstellen
Lauffähig ab Profan-Version 5.0
<========================================================================>
<               Animationen in Masse                                     >
<                                                                        >
<Beschreibung:                                                           >
<Dieser Quellcode soll zeigen, wie einfach es ist mit Profan²            >
<ansprechende Animationen zu programmieren. Durch die von mir            >
<entwickelte BMPEngine ist es auch kein Nachteil mehr, daß man in        >
<Profan² nur eine Memory-Bitmap hat.                                     >
<                                                                        >
<Autor: Waldemar Derr                                                    >
<eMail: Waldemar.Derr@t-online.de                                        >
<Home : http://home.t-online.de/home/waldemar.derr                       >
<                                                                        >
<Status: Dieser Code ist natürlich Freeware.                             >
<                                                                        >
<Hinweis:                                                                >
<In Version 6.1 läuft es nur im compilierten Zustand.                    >
<========================================================================>
 $I bmpengine.inc
windowstyle 16
window div&(sub(%maxx,512),2),div&(sub(%maxy,400),2)-512,400
windowtitle Animationen in Masse
randomize
settruecolor 1
setautopaint 0
declare bmp_cd%,bmp_draw%,bmp_hint%,cds%,count%,record%,bmp_wd%,timer&,frame%,frames%
declare cdx%,cdy%,cdx1%,cdy1%,cdxricht%,cdyricht%,cdframe%,cdspeed%
declare cds#,wechsel%,wechsel_timer&,wd%,akt_cds%,cd%,fast_area%
declare bmp_drawx%,bmp_drawy%,bmp_hintx%,bmp_hinty%,knoten%,width%,height%
declare t1%,t2%,t3%,t4%,t5% Temporäre Variablen
let width%=width(%hwnd)
let height%=height(%hwnd)
let cds%=1000
let akt_cds%=3
let record%=12
let fast_area%=createtext(%hwnd,,0,0,width%,height%) Das Zeichnen in einem Textfeld läuft viel schneller ab.
let wd%=1
let knoten%=0
let cd%=1
dim cds#,mul(record%,cds%)
dim$ 5
list$ 0=Mit rechter Maustaste beenden
list$ 1=Mit +/- Tasten die Anzahl der Objekte bestimmen
list$ 2=Mit Leertaste das Autor-Bild ein- oder ausblenden
list$ 3=Mit K-Taste die Knotenpunkte ein- oder ausblenden
list$ 4=Mit C-Taste die CDs ein- oder ausblenden
list$ 5=© Waldemar Derr

proc init_cds

    declare rndx%,rndy%
    let count%=0

    while neq(count%,cds%)

        let rndx%=rnd(sub(width%,30))
        let rndy%=rnd(sub(height%,26))
        word cds#,mul(count%,record%)=rndx%
        word cds#,add(mul(count%,record%),2)=rndy%
        word cds#,add(mul(count%,record%),4)=add(rndx%,30)
        word cds#,add(mul(count%,record%),6)=add(rndy%,26)
        byte cds#,add(mul(count%,record%),8)=rnd(2) xricht
        byte cds#,add(mul(count%,record%),9)=rnd(2) yricht
        byte cds#,add(mul(count%,record%),10)=rnd(5) frame
        byte cds#,add(mul(count%,record%),11)=add(rnd(10),1) speed
        inc count%

    wend

endproc

init_cds
bmpengineinit BMPEngine initialisieren (muß sein)
addbmp width%,height%
let bmp_draw%=@%(0) Handle für die Zeichenfläche
addbmp width%,height%
let bmp_hint%=@%(0) Handle für den Hintergrund
addbmp 120,26
let bmp_cd%=@%(0) handle für die CD-Bitmap
addbmp 141,183
let bmp_wd%=@%(0)
bmpenginerun Die Positionen der Bitmaps berechnen
let bmp_drawx%=bmpx(bmp_draw%)
let bmp_drawy%=bmpy(bmp_draw%)
let bmp_hintx%=bmpx(bmp_hint%)
let bmp_hinty%=bmpy(bmp_hint%)
mcls reqx(),reqy()
startpaint -1
usepen 0,1,rgb(255,255,255)
rectangle 0,0-reqx(),reqy()
rectangle bmp_hintx%,bmp_hinty%-add(bmp_hintx%,bmpwidth(bmp_hint%)),add(bmp_hinty%,bmpheight(bmp_hint%))
loadbmp cd.bmp,bmpx(bmp_cd%),bmpy(bmp_cd%);0
loadbmp wd.bmp,bmpx(bmp_wd%),bmpy(bmp_wd%);0
loadsizedbmp hint.bmp,bmp_hintx%,bmp_hinty%-width%,height%;0
endpaint
let timer&=add(&gettickcount,1000)
let wechsel_timer&=add(&gettickcount,3000)

while neq(%mousepressed,2)

    startpaint -1
    copybmp bmp_hintx%,bmp_hinty%-width%,height% > bmp_drawx%,bmp_drawy%;0
    usepen 0,1,0
    let count%=0

    while neq(count%,akt_cds%)

        let t1%=mul(count%,record%) zwischenspeicherung der variable zur steigerung der geschwindigkeit
        let cdx%=word(cds#,t1%)
        let cdy%=word(cds#,add(t1%,2))
        let cdx1%=word(cds#,add(t1%,4))
        let cdy1%=word(cds#,add(t1%,6))
        let cdxricht%=byte(cds#,add(t1%,8))
        let cdyricht%=byte(cds#,add(t1%,9))
        let cdframe%=byte(cds#,add(t1%,10))
        let cdspeed%=byte(cds#,add(t1%,11))

        if cdxricht%

            add cdx%,cdspeed%
            add cdx1%,cdspeed%

        else

            sub cdx%,cdspeed%
            sub cdx1%,cdspeed%

        endif

        if cdyricht%

            add cdy%,cdspeed%
            add cdy1%,cdspeed%

        else

            sub cdy%,cdspeed%
            sub cdy1%,cdspeed%

        endif

        if lt(cdx%,1)

            let cdxricht%=1
            let cdx%=0

        elseif gt(cdx1%,width%)

            let cdxricht%=0
            let cdx%=sub(width%,30)

        endif

        if lt(cdy%,1)

            let cdyricht%=1
            let cdy%=0

        elseif gt(cdy1%,height%)

            let cdyricht%=0
            let cdy%=sub(height%,26)

        endif

        inc cdframe%
        case gt(cdframe%,3):let cdframe%=0
        case knoten%:lineto add(cdx%,15),add(cdy%,13)
        case cd%:copybmp add(bmpx(bmp_cd%),mul(cdframe%,30)),bmpy(bmp_cd%)-30,26 > add(cdx%,bmp_drawx%),add(cdy%,bmp_drawy%);-1
        let t1%=mul(count%,record%)
        word cds#,t1%=cdx%
        word cds#,add(t1%,2)=cdy%
        word cds#,add(t1%,4)=add(cdx%,30)
        word cds#,add(t1%,6)=add(cdy%,26)
        byte cds#,add(t1%,8)=cdxricht%
        byte cds#,add(t1%,9)=cdyricht%
        byte cds#,add(t1%,10)=cdframe%
        inc count%

    wend

    inc frame%

    if gt(&gettickcount,timer&)

        let timer&=add(&gettickcount,1000)
        let frames%=div&(add(frames%,frame%),2)
        let frame%=0

    endif

    if gt(&gettickcount,wechsel_timer&)

        inc wechsel%
        case gt(wechsel%,5):let wechsel%=0
        let wechsel_timer&=add(&gettickcount,3000)

    endif

    usefont courier new,16,0,0,0,0
    textcolor 0,-1
    usebrush 1,rgb(192,192,192)
    usepen 5,0,0
    let t1%=bmp_drawx%
    let t2%=bmp_drawy%
    rectangle t1%,t2%-add(t1%,frames%),add(t2%,16)
    drawtext t1%,t2%,add$(Frames: ,str$(frames%))
    add t2%,18
    drawtext t1%,t2%,add$(Objekte: ,str$(akt_cds%))
    let t2%=sub(add(bmp_drawy%,height%),18)
    drawtext t1%,t2%,list$(wechsel%)
    let t1%=div&(sub(width%,141),2) X-Mitte im Fenster
    let t2%=div&(sub(height%,183),2) Y-Mitte im Fenster
    case wd%:copybmp bmpx(bmp_wd%),bmpy(bmp_wd%)-141,183 > add(t1%,bmp_drawx%),add(t2%,bmp_drawy%);-1
    endpaint
    Ausgabe des Inhalts auf das Textfeld (weils schneller ist)
    startpaint fast_area%
    mcopybmp bmp_drawx%,bmp_drawy%-width%,height% > 0,0;0
    endpaint
    Tastaturabfrage
    let t1%=1

    if scankey(109)

        dec akt_cds%
        case lt(akt_cds%,1):let akt_cds%=1

    elseif scankey(107)

        inc akt_cds%
        case gt(akt_cds%,cds%):let akt_cds%=cds%

    elseif scankey(32)

        let wd%=not(wd%)

    elseif scankey(75)

        let knoten%=not(knoten%)

    elseif scankey(67)

        let cd%=not(cd%)

    else

        let t1%=0

    endif

    case t1%:sendkey(%hwnd,0)

wend

disposeengine
disponer cds#
end
 
15.07.2007  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.982 Views

Untitledvor 0 min.
GDL31.12.2014
Tommy15.02.2013
Peter Max Müller26.11.2011
RudiB.01.06.2011
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie