Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 267 odgovora
  • 92.576 pregleda

Najnovija ↓

Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 10:11 · pre 226 meseci #122
Dali neko zna kako da se dobije hWnd (window handler) prozora koji kreira screenres funkcija ?
Hteo sam da napravim malo bolje resenje za msg loop u ovoj igri (subklasiranjem window procedure) ali nemogu da nadjem hWnd ....
Potpis
HomePage http://www.eurora3d.com
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 11:04 · pre 226 meseci #124
@masterjoda: nije lose, mada su tenkici iz SpriteLib GPL-a nekako lepsi za oko, mozes da pokusas njih da obradis malo.

sto se tice eksplozija to nemoras da crtas to cemo da uradimo sa explosion generatorom, evo npr sta on moze da uradi:

Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 13:18 · pre 226 meseci #125
Moze li ta crna pozadina eksplozije da bude transparentna sa alfa kanalom?

Jer bi onda eksplozije izgledale super!

@Eurora
Ja u VB-u to resavam ovako:

Code:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim ProzorHwnd as Long
Private Sub Form_Load()
        ProzorHwnd = FindWindow("Notepad", vbNullString) ' Ja sam stavio da trazi Notepad, ali tu upisujes ime prozora
End Sub


Moralo bi da radi i u FreeBASIC-u... :)

Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 14:04 · pre 226 meseci #126
Citat:
stefanpn: Moze li ta crna pozadina eksplozije da bude transparentna sa alfa kanalom?

Jer bi onda eksplozije izgledale super!


Naravno, magical wand tool :)

Citat:

@Eurora
Ja u VB-u to resavam ovako:

Code:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim ProzorHwnd as Long
Private Sub Form_Load()
        ProzorHwnd = FindWindow("Notepad", vbNullString) ' Ja sam stavio da trazi Notepad, ali tu upisujes ime prozora
End Sub


Moralo bi da radi i u FreeBASIC-u... :)


evo moje LookupWindow fje (u ovom slucaju je jednostavnije koristiti FindWindow k'o sto je Stefan predlozio, al evo mozda nekom zatreba ovakva funkcionalnost)
Code:

Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


Public Function LookupWindow(Optional ByVal ClassName As String, Optional ByVal Title As String, Optional UseLike As Boolean = False, Optional ByVal Parent As Long) As Long
    LookupWindow = GetChild(Parent, ClassName, Title, UseLike)
End Function
'

Private Function GetChild(Optional ByVal hwnd As Long, Optional ByVal ClassName As String, Optional ByVal Title As String, Optional UseLike As Boolean = False)
    
    Dim lHandle     As Long
    Dim lRet        As Long
    Dim sBuffer     As String
    Dim bClassMatch As Boolean
    Dim bTitleMatch As Boolean
    
    Do
        lHandle = FindWindowEx(hwnd, lHandle, vbNullString, vbNullString)
        
        bClassMatch = False
        bTitleMatch = False
        
        If lHandle <> 0 Then
            
            bClassMatch = LenB(ClassName) = 0
            bTitleMatch = LenB(Title) = 0
            
            If Not bClassMatch Then
                    
                sBuffer = String(160, 0)
                lRet = GetClassName(lHandle, sBuffer, 160)
                sBuffer = Left$(sBuffer, lRet)
                
                bClassMatch = (UseLike And (sBuffer Like ClassName)) Or (Not UseLike And (ClassName = sBuffer))
            
            End If
            
            If Not bTitleMatch Then
                
                sBuffer = String(160, 0)
                lRet = GetWindowText(lHandle, sBuffer, 160)
                sBuffer = Left$(sBuffer, lRet)
                
                bTitleMatch = (UseLike And (sBuffer Like Title)) Or (Not UseLike And (Title = sBuffer))
            
            End If
            
            If bClassMatch And bTitleMatch Then
                
                GetChild = lHandle
                Exit Function
            
            Else
                
                lRet = GetChild(lHandle, ClassName, Title, UseLike)
                
                If lRet <> 0 Then
                    
                    GetChild = lRet
                    Exit Function
                
                End If
                
            End If
        
        End If
    
    Loop While lHandle

End Function

samo treba sa Spy++ videti klasu prozora koji se dobije sa ScreenRes
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 14:10 · pre 226 meseci #127
Ali sa magical wand ne bi dobili alpha chanel za mesta na kojima bi vatra mogla malo da se providi. :(

Nego moze li to cudo za eksplozije da napravi eksploziju na providnoj povrsini?
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 14:13 · pre 226 meseci #128
kako ne bi mogla da se providi?

dobijas transparentnu eksploziju za par min!

EDIT:

evo:

mada ipak, sa magic wand nisam dobio zadovoljavajuce rezultate, ali sam uspeo da postignem zeljenu transparenciju pomocu rgb kanala, tj njihove transparencije
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 14:31 · pre 226 meseci #129
Pa dobro, samo nisam bas tako mislio. Ovde se vidi crni trag ispod eksplozije ali i ovo daje dobre rezultate...
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 14:36 · pre 226 meseci
izmenjeno 1 put, poslednji put Aleksandar Ružičić 03.04.2008. u 15:16
  1. Aleksandar Ružičić03.04.2008. u 15:16zapis iz teksta poruke
#130
pa nema crnog traga... crna boja je uklonjena u potpunosti, ovo su samo nijanse crvene boje, nego sam ja duplirao lejer da pojacam jacinu crvene, to je mozda potamnilo neke delove (koji opet nisu crni nego tamno crveni)

EDIT:


evo uradio sam animated gif:


mada sam radio copy/paste frejmova tako da nisu pozicionirani tacno u pixel a i mogao sam malo da ubrzam animaciju... (ovo ce sve da bude mnogo lakse kroz fb)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 16:47 · pre 226 meseci #131
eo sa zvukom,ali zbog velicine fajla izbacio sam pesmu za background music,stoga ubacite fajl koji zelite u ovaj folder pod imenom pesma.mp3

Ne zamerite shto pri pucanje se chuje zvuk explozije ne dzukele koja laje ;)

tnx to @stefanpn, @krcko
Re: [FreeBASIC] EliteTanks projekat 03.04.2008. u 17:20 · pre 226 meseci #133
Citat:
samo treba sa Spy++ videti klasu prozora koji se dobije sa ScreenRes

Bavio sam se time (i window stvarima uopste) ... imate jedan program koji radi to i pravi providnost prozora (pisao sam ga je u asembleru) na http://www.eurora3d.com/files/TransparentWin.zip
Prosli put sam mislio na neku FB funkciju koja bi vratila window handler posle screenres ... al vidim da ni vi nemate neko bolje resenje od trazenja preko win API-a (trazio sam i po FB dokumentaciji)
Potpis
HomePage http://www.eurora3d.com
Re: [FreeBASIC] EliteTanks projekat 04.04.2008. u 00:23 · pre 226 meseci
izmenjeno 1 put, poslednji put Eurora3D Team 04.04.2008. u 01:32
  1. Eurora3D Team04.04.2008. u 01:32zapis iz teksta poruke
#137
@stefanpn
Probao sam da malo optimalizujem onaj tvoj primer (nije ova zadnja verzija) ... i nisam nesto narocito zadovoljan ... tako da ovaj kod bolje koristi ako ti bude trebao za neke proste stvari. CPU vreme je sad oko 10% (na mom cpu ... a bilo je oko 20) al mi je ventilator na laptopu urlao dok sam ovo programirao :)
Probao sam skoro sve sto znam ... od multithreadinga , kratkih loop-ova subklasiao sam i GL window (sad je malo poslusniji :) ) al na kraju sam zakljucio (pored toga sto si mogao malo srecnije da uradis glavnu petlju) da ova OGL library i nije nesto optimalizovana ... Koliko sam shvatio vi cete ionako da koistite nesto drugo za grafiku tako da ovaj kod moze nekom da sluzi kao neki primer
Nasao sam i kako se iz FB dobija hWnd posle screenres :) ...
U zipu su sve linkovane dll (3 kom), kod , program i slicice
Potpis
HomePage http://www.eurora3d.com
Re: [FreeBASIC] EliteTanks projekat 04.04.2008. u 00:59 · pre 226 meseci #138
by the way :) Zasto niko ne ukljuci FbEdit project file. Ova zadnja verzija sa zvukom je ok al nije napravljen kompaktan projekat.
@Aleksandar Vasic netrebas da kompajlujes Music.bas i arrey ... ova dva fajla su ukompajlovana sa main fajlom
I mislim da je jednostavnije da su fajlovi dynarray.bas i music.bas bi fajlovi ...
Al sve u svemu dobro je :) vidi se da je nesto uradjeno ....
Potpis
HomePage http://www.eurora3d.com
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme