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 » Sat Mar 07, 2009 4:07 pm

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 208 times
0.21b
akkunamoottori021b.rar
(4.92 KiB) Downloaded 186 times
0.52b
akkunamoottori052b.rar
(5.96 KiB) Downloaded 248 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 11: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 » Sat Mar 07, 2009 6:21 pm

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 » Sat Mar 07, 2009 7:42 pm

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 » Sat Mar 07, 2009 10:50 pm

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ä.
^^

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Akkunamoottori

Post by phons » Sat Mar 07, 2009 10:54 pm

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 » Sat Mar 07, 2009 11:04 pm

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 » Sat Mar 07, 2009 11:37 pm

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: 867
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Akkunamoottori

Post by Jare » Sun Mar 08, 2009 2:53 am

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.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Akkunamoottori

Post by Jani » Sun Mar 08, 2009 11:53 am

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

User avatar
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Akkunamoottori

Post by Viltzu » Sun Mar 08, 2009 12:32 pm

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 1:04 pm, edited 1 time in total.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Akkunamoottori

Post by Jani » Sun Mar 08, 2009 1:00 pm

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

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Akkunamoottori

Post by phons » Sun Mar 08, 2009 1:17 pm

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 1:29 pm, edited 2 times in total.
Image

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Akkunamoottori

Post by Jani » Sun Mar 08, 2009 1:24 pm

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

User avatar
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Akkunamoottori

Post by Viltzu » Sun Mar 08, 2009 1:27 pm

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ä.


User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Akkunamoottori

Post by nevssons » Sun Mar 08, 2009 9:31 pm

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 » Sun Mar 08, 2009 9:45 pm

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

Nevssons: aika nice :)
^^

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Akkunamoottori

Post by nevssons » Sun Mar 08, 2009 10:35 pm

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

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Akkunamoottori

Post by MaGetzUb » Sun Mar 08, 2009 11:41 pm

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 » Sun Mar 08, 2009 11:56 pm

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
^^

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Akkunamoottori

Post by Jani » Mon Mar 09, 2009 5:32 pm

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