Akkunamoottori

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Akkunamoottori

Post by TheDuck »

Eli kyseessä on piirtokomennoilla ja matematiikalla toimiva ikkunamoottori CB-ohjelman sisässä. Tämän avulla voi helposti tehdä suljettavia, liikuteltavia ja muita hauskoja ikkunoita peliinsä. Projektia on väännetty suunnilleen kaksi päivää ja nyt se on julkaisukunnossa. Kehitysehdotuksia otetaan vastaan ja bugeista PITÄÄ raportoida.

[SCREENSHOT]
[SCREENSHOT 2]
[KOTISIVUT]

Ja sitten itse moottori liitteenä:
0.12b
akkunamoottori.rar
(4.48 KiB) Downloaded 411 times
0.21b
akkunamoottori021b.rar
(4.92 KiB) Downloaded 375 times
0.52b
akkunamoottori052b.rar
(5.96 KiB) Downloaded 456 times
EDIT:

Uusi versio, 0.12 beta

EDIT:

Uusi versio, 0.21 beta ulkona, jätin vanhan liitteen myös paikalleen

EDIT:

Uusi versio, 0.52 beta ulkona, jätin taas vanhan liitteen paikalleen

Last edited by TheDuck on Mon Mar 09, 2009 10:45 pm, edited 8 times in total.
^^
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Akkunamoottori

Post by vilQuri »

Jes, tuntuu hiukan paremmalta kuin tuo Janelas, mikä lie. Ja kysymyksiä: saako ulkoasua muokata vapaasti?? Ja tartteeko mainita nimi(ei tästä haittaakaan ole, mutta silti kysyn) ??
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Akkunamoottori

Post by TheDuck »

vilQuri wrote:Jes, tuntuu hiukan paremmalta kuin tuo Janelas, mikä lie. Ja kysymyksiä: saako ulkoasua muokata vapaasti?? Ja tartteeko mainita nimi(ei tästä haittaakaan ole, mutta silti kysyn) ??
Tee mitä haluat, annan vapaat kädet. Ja kannattaa lukea readme, siellä maininta tuosta nimiasiasta ;)

Ja jos on kehitysehdotuksia, suoraan vaan sanomaan.
^^
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Akkunamoottori

Post by TheDuck »

Pikapäivitys.

Akkunamoottori 0.12 beta:

- Bugi: Ikkunan läpiaktivointi korjattu
- Bugi: Ohjelman hyytyminen, jos ikkunoita ei ole luotu yhtään korjattu
- Lisäys: Aktiivinen ikkuna on hieman kirkkaampi kuin muut ikkunat

Lataus ekasta viestistä.
^^
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Akkunamoottori

Post by phons »

tee tohon ikkunaan: sulku, alas ja suurennus namikat... :D Itelläkin oli tällanen mut se homma vähän kusi...
Image
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Akkunamoottori

Post by TheDuck »

phons wrote:tee tohon ikkunaan: sulku, alas ja suurennus namikat... :D Itelläkin oli tällanen mut se homma vähän kusi...
Tarkoituksena ei ole koodata windowsin ikkunajärjestelmää sekä käynnistä-palkkia uudestaan. Mutta sellaisen voisin tehdä että kun painaa namiskaa, sisältö häviää ja ikkuna on pelkkä palkki jota voi liikutella, eli ikkuna menee minikokoon. Tämä olisi periaatteessa helppo tehdä. Pitää miettiä asiaa ;)
^^
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Akkunamoottori

Post by esa94 »

TheDuck wrote:
phons wrote:tee tohon ikkunaan: sulku, alas ja suurennus namikat... :D Itelläkin oli tällanen mut se homma vähän kusi...
Tarkoituksena ei ole koodata windowsin ikkunajärjestelmää sekä käynnistä-palkkia uudestaan. Mutta sellaisen voisin tehdä että kun painaa namiskaa, sisältö häviää ja ikkuna on pelkkä palkki jota voi liikutella, eli ikkuna menee minikokoon. Tämä olisi periaatteessa helppo tehdä. Pitää miettiä asiaa ;)
Tuota varmaan haettiinkin sillä pienennyksellä?
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Akkunamoottori

Post by Jare »

Vaikuttaa mielenkiintoiselta. Näissä ikkunamoottoreissa vain tahtoo yleisesti olla se paha ongelma, että koordinaatit menevät sekaisin. Esim. CBSDK:ssa olevia lomake-elementtejä lienee mahdotonta saada toimimaan ikkunoissa ilman näiden elementtien koodin muokkaamista. Kyllähän ne saa piirrettyä tuonne ikkunoihin, mutta koetapa saada ne ymmärtämään hiiren koordinaatteja kun ollaan ikkunassa ;) .

Suosittelen myös tutustumaan ConvertoToInteger()- ja ConvertToType()-funktioihin. Saat tuon moottorin nopeammaksi niiden avulla. Ikkunalle ei kannata antaa juoksevaa ID:tä, koska joudut käymään ikkunoita läpi lenkissä löytääksesi yhden tietyn ikkunan. Aseta id:ksi ConvertToInteger()-funktion tulos ja kun haluat käsitellä kyseistä ikkunaa, kirjoita vain w.window = ConvertToType(w\ID). Paljon nopeampaa etenkin silloin, kun ikkunoita on paljon.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Akkunamoottori

Post by Jani »

TheDuck wrote:Pikapäivitys.

Akkunamoottori 0.12 beta:

- Bugi: Ikkunan läpiaktivointi korjattu
- Bugi: Ohjelman hyytyminen, jos ikkunoita ei ole luotu yhtään korjattu
- Lisäys: Aktiivinen ikkuna on hieman kirkkaampi kuin muut ikkunat

Lataus ekasta viestistä.
Eihän tuossa ylimmäisen viestin liitteessä ollut mitään uutta..?
Ehkä tuo 0.12 beta kanttis uppia :D.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Akkunamoottori

Post by Viltzu »

Onhan siinä uutta? Kaikki mitkä TheDuck sanoi niin ne on lisätty/korjattu.
EDIT:

Juuri siinä ekan viestin liitteessä on uusin.

Last edited by Viltzu on Sun Mar 08, 2009 12:04 pm, edited 1 time in total.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Akkunamoottori

Post by Jani »

Aha.
Ainakaan ylimmäisen viestin liitteessä ei ole.
Oisko linkkiä sitten siihen uuteen?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Akkunamoottori

Post by phons »

Jaa miten nii ei ole? Siinähän on komeo liite josta voi ladata tuon... Jos väität että se on vanha versio niin suksi kuuseen! :D
edit: arhhhh!! Se liite on vaihdettu!!
edit2: kiitos viltzu
Last edited by phons on Sun Mar 08, 2009 12:29 pm, edited 2 times in total.
Image
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Akkunamoottori

Post by Jani »

Noh, anti olla.
Sanonpa vain ettei yläviestin liitteessä ole MITÄÄN uutta.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Akkunamoottori

Post by Viltzu »

Miten niin ei ole? Testasitko edes? Koititko tehdä sitä minkä TheDuck oli korjannut?
Nimittäin minä kun latasin siitä niin siinä oli korjattu/lisätty kaikki mitä TheDuck sanoi. Ja jos sinulla oli CB:n ikkunassa vanha ikkunamoottori auki?
EDIT:

Eikö ole komentoa jolla saisi siirrettyä ikkunaa? Sellainen olisi kätevä.

nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Akkunamoottori

Post by nevssons »

tein nyt huvikseni uuden ulkoasun tuohon.(Ateeksi lupaa kysymätön koodin muokkaus)

Uusi DrawWindos komento:

Code: Select all

Function DrawWindows(n = 0)
    If currentid = 1 Then Return False 
    height = TextHeight("A")
    For w.window = Each window
        If n = 0 Then
            //fill the area black
            Color cbblack
            Box w\x, w\y, w\w, w\h
            //draw the window
            Color cbdark
            Box w\x,w\y,w\w,w\h,0
            Box w\x-2,w\y-2,w\w+4,w\h+4,0
            Box w\x,w\y,w\w,TITLE_HEIGHT-1
            Line w\x,w\y + TITLE_HEIGHT,w\x+w\w,w\y + TITLE_HEIGHT
            Color cbsilver
            Box w\x-1,w\y-1,w\w+2,w\h+2,0
            Line w\x,w\y + TITLE_HEIGHT-1,w\x+w\w,w\y + TITLE_HEIGHT-1
    
            
          //draw window title
            Text w\x + 5, w\y + (TITLE_HEIGHT - height - 2), w\title$
            //draw the X buttonbox 
            Color cbdarkred 
            Box w\x+w\w+2-TITLE_HEIGHT,w\y+1,TITLE_HEIGHT-3,TITLE_HEIGHT-3
            Color cbred
            Box w\x+w\w+2-TITLE_HEIGHT+1,w\y+1+1,TITLE_HEIGHT-5,TITLE_HEIGHT-5
            Color cbwhite
            Line w\x + w\w-3, w\y+2,w\x + w\w - TITLE_HEIGHT+3,w\y + TITLE_HEIGHT-4
            Line w\x + w\w - TITLE_HEIGHT+3, w\y+2, w\x + w\w-3, w\y + TITLE_HEIGHT-4 //x2
            //mouse over X button draw
            If MouseX() > w\x + w\w - TITLE_HEIGHT And MouseX() < w\x + w\w And MouseY() > w\y And MouseY() < w\y + TITLE_HEIGHT Then
               Line w\x + w\w-3, w\y+2+1,w\x + w\w - TITLE_HEIGHT+3+1,w\y + TITLE_HEIGHT-4
               Line w\x + w\w-3-1, w\y+2,w\x + w\w - TITLE_HEIGHT+3,w\y + TITLE_HEIGHT-4-1
               Line w\x + w\w - TITLE_HEIGHT+3+1, w\y+2, w\x + w\w-3, w\y + TITLE_HEIGHT-4-1 //x2
               Line w\x + w\w - TITLE_HEIGHT+3, w\y+2+1, w\x + w\w-3-1, w\y + TITLE_HEIGHT-4
             If MouseUp(1) Then DeleteWindow(w\ID) 
            EndIf 
            DrawImage w\img, w\x + 1, w\y + 1 + TITLE_HEIGHT
        ElseIf n <> 0 Then
            If w\ID = active_window Then
                 //fill the area black
            Color cbblack
            Box w\x, w\y, w\w, w\h
            //draw the window
            Color cbdark
            Box w\x,w\y,w\w,w\h,0
            Box w\x-2,w\y-2,w\w+4,w\h+4,0
            Box w\x,w\y,w\w,TITLE_HEIGHT-1
            Line w\x,w\y + TITLE_HEIGHT,w\x+w\w,w\y + TITLE_HEIGHT
            Color cbsilver
            Box w\x-1,w\y-1,w\w+2,w\h+2,0
            Line w\x,w\y + TITLE_HEIGHT-1,w\x+w\w,w\y + TITLE_HEIGHT-1
    
            Color cbwhite
          //draw window title
            Text w\x + 5, w\y + (TITLE_HEIGHT - height - 2), w\title$
            //draw the X buttonbox 
            Color cbdarkred 
            Box w\x+w\w+2-TITLE_HEIGHT,w\y+1,TITLE_HEIGHT-3,TITLE_HEIGHT-3
            Color cbred
            Box w\x+w\w+2-TITLE_HEIGHT+1,w\y+1+1,TITLE_HEIGHT-5,TITLE_HEIGHT-5
            Color cbwhite
            Line w\x + w\w-3, w\y+2,w\x + w\w - TITLE_HEIGHT+3,w\y + TITLE_HEIGHT-4
            Line w\x + w\w - TITLE_HEIGHT+3, w\y+2, w\x + w\w-3, w\y + TITLE_HEIGHT-4 //x2
            //mouse over X button draw
            If MouseX() > w\x + w\w - TITLE_HEIGHT And MouseX() < w\x + w\w And MouseY() > w\y And MouseY() < w\y + TITLE_HEIGHT Then
               Line w\x + w\w-3, w\y+2+1,w\x + w\w - TITLE_HEIGHT+3+1,w\y + TITLE_HEIGHT-4
               Line w\x + w\w-3-1, w\y+2,w\x + w\w - TITLE_HEIGHT+3,w\y + TITLE_HEIGHT-4-1
               Line w\x + w\w - TITLE_HEIGHT+3+1, w\y+2, w\x + w\w-3, w\y + TITLE_HEIGHT-4-1 //x2
               Line w\x + w\w - TITLE_HEIGHT+3, w\y+2+1, w\x + w\w-3-1, w\y + TITLE_HEIGHT-4
             If MouseUp(1) Then DeleteWindow(w\ID) 
            EndIf 
                DrawImage w\img, w\x + 1, w\y + 1 + TITLE_HEIGHT
            EndIf 
        EndIf 
    Next w
    If n = 0 Then DrawWindows(active_window)
EndFunction 
Koodarina kohtalainen, henkilönä vittumainen
Image
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Akkunamoottori

Post by TheDuck »

Kuten jo aikaisemmin totesin, koodi on ihan vapaassa käytössä eikä mitään lupia tarvitse.

Nevssons: aika nice :)
^^
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Akkunamoottori

Post by nevssons »

TheDuck wrote:Nevssons: aika nice :)
Kiitos kiitos. Piti jotain tehä, kun hieno syteemi oli sellasissa kuorissa.

Ja innostuin tekemään tolla hauskan töherrys moottorin:

Code: Select all

SCREEN 800,600

Include "akkunamoottori.cb"

SetWindow "Töherrys moottori"
Type ikkunat
 Field ikkuna
End Type

f=5
Repeat

    If Button("UUSI TÖHERRYS :P",10,10,200,20) then 
    T.ikkunat=New(ikkunat)
    T\ikkuna= CreateWindow("Töherrys", 10, 10, 400, 300)
    EndIf 
///////////////////////////////////////////////////////
  
Color 255,255,255
   
      If MouseDown(1) Then 
          If piirto Then 
              x2=MouseX()-windowX(active_window)
              y2=MouseY()-windowy(active_window)-TITLE_HEIGHT
          drawtowindow(active_window)
            fatLine (X1,Y1,x2,y2,f)
          DrawToScreen 
            x1=x2
            y1=y2
          Else 
            
            x1=MouseX()-windowX(active_window)
            y1=MouseY()-windowy(active_window)-TITLE_HEIGHT
            piirto=1
          EndIf 
         
      EndIf 
      
      If MouseUp(1) Then piirto=0
////////////////////////////////////////////////////////// 
    UpdateWindows()
    DrawWindows()
    DrawScreen
Forever 

Function Button(Tex$,x,y,w,h)
If MouseX()>x And MouseX()<x+w And MouseY()>y And MouseY()<y+h Then
If MouseDown(1) Then 
Color 120,120,120
Else
Color 150,150,150
EndIf 
päällä=1
Else  
Color 200,200,200
EndIf 
Box x+h/2,y,w-h,h
Circle x,y,h
Circle x+w-h,y,h
Color 0,0,0
CenterText x+w/2,y+h/2,Tex$,2
If päällä And MouseUp(1) Then Return 1
EndFunction 
 

  Function fatline(x1,y1,x2,y2,f)
    For s=0 To Distance (x1,y1,x2,y2)
     Circle x1-f/2+Cos(GetAngle(x1,y1,x2,y2))*s,y1-f/2-Sin(GetAngle(x1,y1,x2,y2))*s,f
    Next s
  EndFunction 
Tehty parista omasta koodista liittelemällä.
Koodarina kohtalainen, henkilönä vittumainen
Image
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Akkunamoottori

Post by MaGetzUb »

Mahtavaa jälkeä, vaikka yleensä tykkään vähän graaffisemmasta.. :D Hienoa jatka samaan malliin ja tee koko käyttöliittymä. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Akkunamoottori

Post by TheDuck »

Jälleen uusi versio, 0.21b!

Changelog:
- Uusi funktio, MoveWindow()
- Ikkunan pienennys ja suurennus
- ResizeWindow skaalausbugi korjattu

Valitettavasti nevssonssin modaus ei ole yhteensopiva nykyisen kanssa :( Pienellä säädöllä kyllä saa toimivaksi ;)

EDIT: Kaikki versiot ovat kumminkin yhteensopivia aikaisemmille versioille tehdyissä ohjelmissa, senkun päivittää kirjaston :P
^^
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Akkunamoottori

Post by Jani »

Mutta tuo 21b ei käänny. :(

Valittaa kirjoituksesta. Huomaisiko joku ongelmaa?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Post Reply