Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2010)

Post by phons »

Siis onko tämä gigantti obj nyt se tausta? ja onko se tausta sellainen että sen voisi tehdä MakeObjectFloor:lla? Vai onko sellainen tausta joka pysyy aina samassa kohassa samanlaisena? En oikein ymmärtänyt ongelmaasi... Mutta taustat kannattaa tehdä kuvilla..
Image
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by temu92 »

Minkä takia sen pitää olla edes niin suuri? :o
User avatar
Kille
Active Member
Posts: 249
Joined: Wed Aug 26, 2009 3:50 pm
Location: Juankoski

Re: Tyhmät kysymykset (I/2010)

Post by Kille »

Kentän taustana on kuva joka piirretään ruutukoordinaattien mukaan ruudulle eikä se liiku. Taustasta ei ole ongelmia vaan vastuksesta. Vastus on se iso objekti ja sen pitäisi olla suunnilleen kentän keskellä.
ZEPPELIN
Jatkoa tulossa... tällä kertaa lataus ei kestä viikkoa
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2010)

Post by phons »

Missä pelissä on niin iso vastus?? :o Tuota... EI tähän taida olla mitään järkevää ratkaisua muutakuin tarinan muuntelu ja vastuksen pienentäminen...
Image
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by otto90x »

Kille wrote:Mitä pitäisi tehdä, kun tarvitsisin pelini loppuvastukseen melkoisen suuren objectin (1000*955 pikseliä)?

Voisiko vihollista kasata piirtokomennoilla? Kuvatkit varmasti toimivat, etenkin jos vihollista ei tarvitse käännellä.

Code: Select all

Const SVGCIRCLE = 1
Const SVGBOX = 2
Const SVGTRIANGLE = 3

SCREEN 1024,768

//aluksen luonti
s=MakeSVG()

//cannons
AddSVGBox(s,-40,-40,3,20,1,32,32,32)
AddSVGBox(s,37,-40,3,20,1,32,32,32)
//wings
AddSVGTriangle(s,-50,-50,-19,-50,0,22,1,96,96,96)
AddSVGTriangle(s,50,-50,19,-50,0,22,1,96,96,96)
//bottom
AddSVGBox(s,-20,-50,40,30,1,64,64,64)
//thruster left
AddSVGTriangle(s,-20,-55,-10,-55,-15,-60,1,100,100,255)
AddSVGTriangle(s,-17,-55,-13,-55,-15,-57,1,255,255,255)
AddSVGBox(s,-20,-55,10,7,1,64,64,64)
//thruster rught
AddSVGTriangle(s,10,-55,20,-55,15,-60,1,100,100,255)
AddSVGTriangle(s,17,-55,13,-55,15,-57,1,255,255,255)
AddSVGBox(s,10,-55,10,7,1,64,64,64)
//detail
AddSVGBox(s,-16,-47,3,25,1,128,128,128)
AddSVGBox(s,13,-47,3,25,1,128,128,128)
//front
AddSVGTriangle(s,-20,-20,20,-20,0,22,1,64,64,64)
//window
AddSVGTriangle(s,-7,-15,7,-15,0,10,1,150,0,0)



Repeat

    x#=ScreenWidth()/2+Cos(Timer()/20)*100
    y#=ScreenHeight()/2+Sin(Timer()/20)*100
    
    If KeyDown(cbkeyreturn) Then 
        ang# = ang#+5.0
    Else
        ang# = CurveAngle(-Cos(Timer()/20)*10,ang,50.0)
    EndIf
    
    
    zoom# = 5.5+Sin(Timer()/20)*1.0
    
    DrawSVG(s,x#,y#,ang#,zoom#)
    
    SetWindow Str(FPS())
    
    DrawScreen

Forever

DeleteSVG(s)



Function MakeSVG()
    mem = MakeMEMBlock(8)
    list = MakeMEMBlock(1)
    PokeInt mem,4,list
    PokeInt mem,0,0
    Return mem
EndFunction 

Function DeleteSVG(SVG)
    If SVG Then 
        list = PeekInt(SVG,4)
        If list Then 
            For i=0 To MEMBlockSize(list)-1 Step 4
                form = PeekInt(list,i)
                If form Then DeleteMEMBlock form
            Next i
            DeleteMEMBlock list
        EndIf
        DeleteMEMBlock SVG
    EndIf
EndFunction 

Function AddSVGCircle(SVG,x#,y#,radius#,Filled,r=255,g=255,b=255)
    If SVG Then 
        forms = PeekInt(SVG,0)
        list = PeekInt(SVG,4)
        If list Then 
            ResizeMEMBlock list,forms*4+4
            PokeInt SVG,4,list
            mem = MakeMEMBlock(1+4+4+4+1+3)
            PokeByte mem,0,SVGCIRCLE
            PokeFloat mem,1,x#
            PokeFloat mem,5,y#
            PokeFloat mem,9,Max(radius#,0.0)
            PokeByte mem,13,Min(Max(filled,0),1)
            PokeByte mem,14,Max(Min(r,255),0)
            PokeByte mem,15,Max(Min(g,255),0)
            PokeByte mem,16,Max(Min(b,255),0)
            PokeInt list,forms*4,mem
            PokeInt SVG,0,forms+1
        EndIf 
    EndIf 
End Function 

Function AddSVGBox(SVG,x#,y#,w#,h#,Filled,r=255,g=255,b=255)
    If SVG Then 
        forms = PeekInt(SVG,0)
        list = PeekInt(SVG,4)
        If list Then 
            ResizeMEMBlock list,forms*4+4
            PokeInt SVG,4,list
            mem = MakeMEMBlock(1+4+4+4+4+1+3)
            PokeByte mem,0,SVGBOX
            PokeFloat mem,1,x#
            PokeFloat mem,5,y#
            PokeFloat mem,9,w#
            PokeFloat mem,13,h#
            PokeByte mem,17,Min(Max(filled,0),1)
            PokeByte mem,18,Max(Min(r,255),0)
            PokeByte mem,19,Max(Min(g,255),0)
            PokeByte mem,20,Max(Min(b,255),0)
            PokeInt list,forms*4,mem
            PokeInt SVG,0,forms+1
        EndIf 
    EndIf 
End Function 

Function AddSVGTriangle(SVG,x1#,y1#,x2#,y2#,x3#,y3#,Filled,r=255,g=255,b=255)
    If SVG Then 
        forms = PeekInt(SVG,0)
        list = PeekInt(SVG,4)
        If list Then 
            ResizeMEMBlock list,forms*4+4
            PokeInt SVG,4,list
            mem = MakeMEMBlock(1+6*4+1+3)
            PokeByte mem,0,SVGTRIANGLE
            PokeFloat mem,1,x1#
            PokeFloat mem,5,y1#
            PokeFloat mem,9,x2#
            PokeFloat mem,13,y2#
            PokeFloat mem,17,x3#
            PokeFloat mem,21,y3#
            PokeByte mem,25,Min(Max(filled,0),1)
            PokeByte mem,26,Max(Min(r,255),0)
            PokeByte mem,27,Max(Min(g,255),0)
            PokeByte mem,28,Max(Min(b,255),0)
            PokeInt list,forms*4,mem
            PokeInt SVG,0,forms+1
        EndIf 
    EndIf 
End Function 

Function DrawSVG(SVG,x#,y#,angle#=0.0,zoom#=1.0)

    locked = 0

    If SVG Then 
        forms = PeekInt(SVG,0)
        list = PeekInt(SVG,4)
        If list Then 
            For i=0 To forms-1
                form = PeekInt(list,i*4)
                
                If form Then 
                    formtype = PeekByte(form,0)
                    
                    If formtype = SVGCIRCLE Then 
                    
                        If locked Then Unlock : locked = 0
                    
                        radius# = PeekFloat(form,9)
                        
                        xx# = x#+Cos(-angle)*PeekFloat(form,1)*zoom#+Cos(-angle+90)*PeekFloat(form,5)*zoom#-radius#*zoom#*0.5
                        yy# = y#+Sin(-angle)*PeekFloat(form,1)*zoom#+Sin(-angle+90)*PeekFloat(form,5)*zoom#-radius#*zoom#*0.5
                        
                        Color PeekByte(form,14),PeekByte(form,15),PeekByte(form,16)
                        
                        Circle xx#,yy#,radius#*zoom#,PeekByte(form,13)
                        
                    ElseIf formtype = SVGBOX Then 
                    
                        If Not locked Then Lock : locked = 1
                    
                        w#=PeekFloat(form,9)*zoom#
                        h#=PeekFloat(form,13)*zoom#
                        xx#=x#+Cos(-angle)*PeekFloat(form,1)*zoom#+Cos(-angle+90)*PeekFloat(form,5)*zoom#+Cos(-angle)*w#*0.5+Cos(-angle+90)*h#*0.5
                        yy#=y#+Sin(-angle)*PeekFloat(form,1)*zoom#+Sin(-angle+90)*PeekFloat(form,5)*zoom#+Sin(-angle)*w#*0.5+Sin(-angle+90)*h#*0.5
                        
                        Color PeekByte(form,18),PeekByte(form,19),PeekByte(form,20)
                        
                        AngleBox(xx#,yy#,w#,h#,-angle#,PeekByte(form,17))
                        
                    ElseIf formtype = SVGTRIANGLE Then 
                        

                        If Not locked Then Lock : locked = 1
                        
                        x1#=x#+Cos(-angle#)*PeekFloat(form,1)*zoom#+Cos(-angle#+90)*PeekFloat(form,5)*zoom#
                        y1#=y#+Sin(-angle#)*PeekFloat(form,1)*zoom#+Sin(-angle#+90)*PeekFloat(form,5)*zoom#
                        
                        x2#=x#+Cos(-angle#)*PeekFloat(form,9)*zoom#+Cos(-angle#+90)*PeekFloat(form,13)*zoom#
                        y2#=y#+Sin(-angle#)*PeekFloat(form,9)*zoom#+Sin(-angle#+90)*PeekFloat(form,13)*zoom#
                        
                        x3#=x#+Cos(-angle#)*PeekFloat(form,17)*zoom#+Cos(-angle#+90)*PeekFloat(form,21)*zoom#
                        y3#=y#+Sin(-angle#)*PeekFloat(form,17)*zoom#+Sin(-angle#+90)*PeekFloat(form,21)*zoom#
                        
                        Color PeekByte(form,26),PeekByte(form,27),PeekByte(form,28)

                        Triangle(x1#,y1#,x2#,y2#,x3#,y3#,PeekByte(form,25))

                    EndIf
                EndIf 
            Next i
            
            If locked Then Unlock : locked = 0
        EndIf 
    EndIf 
    
End Function 

Function AngleBox(x#,y#,w#,h#,ang#,filled=0)
    c1#=Cos(ang#)
    c2#=Cos(ang#+90.0)
    c3#=Cos(ang#+180.0)
    c4#=Cos(ang#+270.0)
    
    s1#=Sin(ang#)
    s2#=Sin(ang#+90.0)
    s3#=Sin(ang#+180.0)
    s4#=Sin(ang#+270.0)
    
    w2#=w#*0.5
    h2#=h#*0.5

    If filled Then 
    
        triangle(x#+c3#*w2#+c2#*h2#, y#+s3#*w2#+s2#*h2#, x#+c1#*w2#+c2#*h2#, y#+s1#*w2#+s2#*h2#, x#+c3#*w2#+c4#*h2#, y#+s3#*w2#+s4#*h2#,1)
        
        triangle(x#+c1#*w2#+c4#*h2#, y#+s1#*w2#+s4#*h2#, x#+c1#*w2#+c2#*h2#, y#+s1#*w2#+s2#*h2#, x#+c3#*w2#+c4#*h2#, y#+s3#*w2#+s4#*h2#,1)
    
    Else
    
        
        Line x#+c3#*w2#+c2#*h2#, y#+s3#*w2#+s2#*h2#, x#+c1#*w2#+c2#*h2#, y#+s1#*w2#+s2#*h2#
        
        Line x#+c3#*w2#+c4#*h2#, y#+s3#*w2#+s4#*h2#, x#+c1#*w2#+c4#*h2#, y#+s1#*w2#+s4#*h2#
        
        Line x#+c3#*w2#+c4#*h2#, y#+s3#*w2#+s4#*h2#, x#+c3#*w2#+c2#*h2#, y#+s3#*w2#+s2#*h2#
        
        Line x#+c1#*w2#+c4#*h2#, y#+s1#*w2#+s4#*h2#, x#+c1#*w2#+c2#*h2#, y#+s1#*w2#+s2#*h2#
       
    EndIf 

End Function 

Function triangle(x1#, y1#, x2#, y2#, x3#, y3#,fill)//by msqrt

    Line x1#, y1#, x2#, y2#
    Line x1#, y1#, x3#, y3#
    Line x3#, y3#, x2#, y2#

    If Not fill Then Return 1
    
    x1#=RoundDown(x1#)
    x2#=RoundDown(x2#)
    x3#=RoundDown(x3#)
    y1#=RoundDown(y1#)
    y2#=RoundDown(y2#)
    y3#=RoundDown(y3#)
    If (y1>y2) Then
        tmpy = y1
        tmpx = x1
        y1 = y2
        x1 = x2
        y2 = tmpy
        x2 = tmpx
    EndIf
    If (y1>y3) Then
        tmpy = y1
        tmpx = x1
        y1 = y3
        x1 = x3
        y3 = tmpy
        x3 = tmpx
    EndIf
    If (y2>y3) Then
        tmpy = y2
        tmpx = x2
        y2 = y3
        x2 = x3
        y3 = tmpy
        x3 = tmpx
    EndIf
    If(y2=y1) Then y1-0.001
    If(y3=y2) Then y3+0.001
    slp1# = (x3-x1)/(y3-y1)
    slp2# = (x2-x1)/(y2-y1)
    slp3# = (x3-x2)/(y3-y2)
    If(Int(y1)<Int(y2)) Then
        For i = y1 To y2
            Line x1+slp1*(i-y1), i, x2+slp2*(i-y2), i
        Next i
    EndIf
    If(Int(y2)<Int(y3)) Then
        For i = y2 To y3
            Line x1+slp1*(i-y1), i, x3+slp3*(i-y3), i
        Next i
    EndIf
    
EndFunction
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
User avatar
Kille
Active Member
Posts: 249
Joined: Wed Aug 26, 2009 3:50 pm
Location: Juankoski

Re: Tyhmät kysymykset (I/2010)

Post by Kille »

Ilmeisesti vika oli koneessa. Varmaan 5 vuotta vanha kannettava, ilmeisesti huono näyttis. Kun kokeilin vielä vanhemmalla pöytäkoneella, niin peli ei hidastunut lainkaan. :oops:
ZEPPELIN
Jatkoa tulossa... tällä kertaa lataus ei kestä viikkoa
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Mitenkös saan jokaiselle äänelle tehtyä omat virheilmoitukset, mikäli ei toimi.

Code: Select all

ääni1=LoadSound("Power Up 1.wav")
ääni2=LoadSound("boom 1.wav")
ääni3=LoadSound("Blaster.wav")
Tuohonkin joku jippo oli, mutten nyt muista mikä :)
"Baby," I said. "I'm a genius but nobody knows it but me."
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG »

Hene wrote:Mitenkös saan jokaiselle äänelle tehtyä omat virheilmoitukset, mikäli ei toimi.

Code: Select all

ääni1=LoadSound("Power Up 1.wav")
ääni2=LoadSound("boom 1.wav")
ääni3=LoadSound("Blaster.wav")
Tuohonkin joku jippo oli, mutten nyt muista mikä :)

Code: Select all

Function LoadSound2(path As String)
    If FileExists(path) Then Return LoadSound(path) Else MakeError "File not found: " + path
EndFunction  
?
Hengität nyt manuaalisesti.
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

Hene wrote:Mitenkös saan jokaiselle äänelle tehtyä omat virheilmoitukset, mikäli ei toimi.

Code: Select all

ääni1=LoadSound("Power Up 1.wav")
ääni2=LoadSound("boom 1.wav")
ääni3=LoadSound("Blaster.wav")
Tuohonkin joku jippo oli, mutten nyt muista mikä :)
Tarkoitatko, kun lataa ja sitä musiikkia ei ole olemassa?
No, käy etukäteen se läpi, onko se olemassa.
Tässä nopeasti tehty esimerkki.

Code: Select all

    Dim error$
    Dim ääni

    If FileExists("Media\gun 7.wav")=0 
        error = error + "Media\gun 7.wav"
    Else 
        ääni = LoadSound("Media\gun 7.wav")
    EndIf
    If FileExists("Media\Räjähde.wav")=0
        error = error + "Media\Räjähde.wav"
    Else 
        ääni = LoadSound("Media\Räjähde.wav")
    EndIf
    
    If error > 0
        AddText "Error: Sinulla puuttu tiedosto/tiedostoja"
        For i=1 To CountWords(error)
            AddText "       " + GetWord(error,i)
        Next i
    EndIf
    
    DrawScreen
    
    WaitKey
EDIT:

DatsuniG ehti ensin =)

jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

miten saan tehtyä kellon siis mis näkyy ihan oikea suomen aika
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

jaahas wrote:miten saan tehtyä kellon siis mis näkyy ihan oikea suomen aika
??, Hakemalla netistä aika, tai olettamalla tietokoneen omistajalla on Suomen aika (Time).
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

mikä täs on vikana?

Code: Select all

SCREEN cbFullScreen,500,300
Repeat
If KeyHit(cbkeyspace) Then o=o+1
If KeyHit(cbkeyt) Then o=0
Text 100,100,"montako o:ta:"+o
DrawScreen
Forever
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by valscion »

jaahas wrote:mikä täs on vikana?

Code: Select all

SCREEN cbFullScreen,500,300
Repeat
If KeyHit(cbkeyspace) Then o=o+1
If KeyHit(cbkeyt) Then o=0
Text 100,100,"montako o:ta:"+o
DrawScreen
Forever
Resoluutio. Täydellä näytöllä harvoin pyörii 500x300 resoluutio. Yleisimmät resoluutiot, jotka toimivat lähes kaikilla koneilla, ovat 800x600 ja 1024x768. Myös 640x480 toimii useilla koneilla.

Miksi sinun pitää edes pyörittää tuota koodia kokonäytöllä?

EDIT: Niin, ja SCREEN komennossahan parametrit menevät hieman eri tavalla. Haluamasi systeemi toimisi näin:

Code: Select all

SCREEN 500,300,0,cbFullscreen
Mutta edelleenhän tuo valittaa sitten että "Unable to set graphics mode".
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

unohin miten saan näytön väriks punasen
Last edited by jaahas on Sat Feb 20, 2010 7:37 pm, edited 2 times in total.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by temu92 »

Manuaali on sitä varten...

Code: Select all

ClsColor 255, 0, 0
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

miten saan näkyvän ajan että on 20 sekunttia aikaa laskee koko ajan
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG »

Code: Select all

aika = Timer()
Repeat
Text 2,2,Str(20 - (Timer() - aika) / 1000)
if Timer() - aika > 20000 Then End
drawscreen
forever
EDIT:

@Viltzu: Sinun viestisi vasta tyhmiä ovatkin. : )

Last edited by DatsuniG on Sat Feb 20, 2010 8:18 pm, edited 1 time in total.
Hengität nyt manuaalisesti.
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

Kuules nyt jaahas, lopeta tuo.

Nuo ovat aivan liian tyhmiä kysymyksiä jopa tänne. Ja varsinkin kun joka kysymykselle laitat oman viestin, kerää niitä kysymyksiä yhteen viestiin.
MANUAALI on avaimesi.
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

Viltzu wrote:Kuules nyt jaahas, lopeta tuo.

Nuo ovat aivan liian tyhmiä kysymyksiä jopa tänne. Ja varsinkin kun joka kysymykselle laitat oman viestin, kerää niitä kysymyksiä yhteen viestiin.
MANUAALI on avaimesi.
no laitan aina uuden koska kun laitan yhen kysymyksen saan vähän ajan päästä uuden ja siihen aijempaan onjo vastattu jos laitan uuden kysymyksen aijempaan viestiin silloin siihen ei vastata
ainiin en jaksa ettiä yhtä pikku juttua tuntia manuaalista
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

jaahas wrote: ainiin en jaksa ettiä yhtä pikku juttua tuntia manuaalista
Käytä hakua?

Anteeksi offtopic.
Locked