Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

skinkken wrote:Wikipediassa tais lukea ne kaikki.
Varmaan löytyy kuitenkin ihan näytönohjaimen valmistajan kotisivuilta helpommin tuo tieto.
User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo »

Kuinka vaihdan icon-kuvakkeen peliini???
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Viltzu »

Laurenzo wrote:Kuinka vaihdan icon-kuvakkeen peliini???
Foorumien haku toiminnolla.
User avatar
Noun
Newcomer
Posts: 19
Joined: Sun May 08, 2011 8:17 pm
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Noun »

Tervehdys taas. Kuinka nuo cbSDK:n 3D-talot saa poistettua uusien tieltä? Kun karttaa vaihtaa ne jäävät sinne möllöttämään. Neuvoa tähän ei SDK:sta itsestään löydy.

EDIT: Kokeilin muuttaa talomuuttujan nollaksi, se ei tee mitään. Taloista voi kuitenkin uudella kartalla juosta läpi.

EDIT2: Tein oman topiikin.
Last edited by Noun on Thu Aug 18, 2011 4:34 pm, edited 1 time in total.
Guest

Re: Tyhmät kysymykset (I/2011)

Post by Guest »

Hei taas. tuli mieleen kysymys kun olen tehnyt oman kartan omaan peliin ja säätänyt sen fullscreenille niin kartan vasemmalla ja oikealla puolella on mustaa. kysymys kuuluu voiko karttaa siirtää että mustaa aluetta on vai kartan vasemmalla puolella?
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

Voi. Kartta (jos puhut tilekartasta) on objekti, eli siihen käy lähes kaikki objektikomennot, kuten PositionObject. Helpompi tapa lienee kuitenkin ehkä siirtää kameraa (PositionCamera), koska silloin ei tarvitse liikuttaa kaikkia pelin objekteja erikseen.

Edit. Tällä koodilla saa kameran aloittamaan kartan oikeasta laidasta:
PositionCamera ObjectX( map ) + ObjectSizeX( map ) / 2 - ScreenWidth() / 2, 0

Kannattaa miettiä sen sisältämää matematiikkaa.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo »

kuinka teen aliohjelman?? :roll:
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex »

gosub komennolla mennään aliohjelmaan ja aliohjelman päättää return käsky

Code: Select all

Repeat
Gosub aliohjelma
DrawScreen
Forever

aliohjelma:
AddText "aliohjelma"
Return 
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
User avatar
ukkeli
Active Member
Posts: 123
Joined: Thu Jan 28, 2010 9:01 pm

Re: Tyhmät kysymykset (I/2011)

Post by ukkeli »

Yritin tehdä textiboxi funktion, miksi se näyttää nollan?

Code: Select all

Repeat

texBox(Testi )



DrawScreen 
Forever 


Function texbox$ (t$)
Box 30,30,300,30,0
Text 40,30, t
Return t
End Function 
...
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Feuer »

Koska testi - muuttujalle ei ole annettu arvoa
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2011)

Post by Akuji »

Kokeilin datakerroksen toimimista painovoimaesimerkissä, mutta huonoin lopputuloksin. Miten saisin esimerkin toimimaan niin, että kun pelihahmo on tilessä numero 2 niin peli loppuu?

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 320,240,0,cbsizable 
SetWindow "Painovoimaesimerkki",3 'suurenna ruudulle

'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23

FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\mappi.til","Media\tilesetti.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin


'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
    ElseIf LeftKey() Then
        'juokse vasemmalle
        PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    
    If GetMap(3,ObjectX(pelihahmo),ObjectY(pelihahmo))=2 Then 
        MakeError "Peli loppu"
        EndIf
        
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
        
        
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
    EndIf

    DrawScreen 'piirrä näyttö

Until EscapeKey()
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

Koodisi pitäisi toimia. Oletko varma että kartassasi on missään datakerroksessa arvoa 2?

Tässä koodisi (eli Zeron koodi) eri mapilla. Muokkasin mappia riveillä 42 ja 43.

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 320,240,0,cbsizable 
SetWindow "Painovoimaesimerkki",3 'suurenna ruudulle

'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23

FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin

EditMap kenttä, 3, 7, 10, 2
EditMap kenttä, 0, 7, 10, 1
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
    ElseIf LeftKey() Then
        'juokse vasemmalle
        PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    
    If GetMap(3,ObjectX(pelihahmo),ObjectY(pelihahmo))=2 Then 
        MakeError "Peli loppu"
        EndIf
        
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
        
        
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
    EndIf

    DrawScreen 'piirrä näyttö

Until EscapeKey()
Edit. ja pyydän anteeksi että sanon mappi enkä kartta.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2011)

Post by Akuji »

Nyt huomasin, että koodi toimii, mutta väärin. Siis kartan datakerroksen numerot tuntuvat olevan täysin eri paikoissa, kuin mihin ne laitoin. Mutta kun sitten tarkistin asian karttaeditorilla, niin numerot olivat kuitenkin oikeilla paikoillaan. :?:
Eli siis datakerroksen numerot sijaitsevat kartan alareunassa, ja kun sinne menee, mitään ei tapahdu. Mutta sitten kun menee kartan yläreunaan, niin peli loppuu... ja siellä yläreunassa ei ole datakerroksessa mitään numeroita.
Astec

Re: Tyhmät kysymykset (I/2011)

Post by Astec »

Miten saan kameran seuraamaan pelihahmoa vain sivuttain, eli kamera ei liiku pystysuunnassa ollenkaan??? Tai sitten voisin laitta esim 10x10 kokoisiin paloihin, joita kamera sitten kuvaisi yksi kerrallaan. Niinkuin VVVVVV:n kamera systeemi.
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

Astec wrote:Miten saan kameran seuraamaan pelihahmoa vain sivuttain, eli kamera ei liiku pystysuunnassa ollenkaan??? Tai sitten voisin laitta esim 10x10 kokoisiin paloihin, joita kamera sitten kuvaisi yksi kerrallaan. Niinkuin VVVVVV:n kamera systeemi.
PositionCamera + ObjectX()
Astec

Re: Tyhmät kysymykset (I/2011)

Post by Astec »

Ja pystyikö kameraa zoomaamaan miten?
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Tyhmät kysymykset (I/2011)

Post by ItzRaines »

Teen graafista piirto-ohjelmaa, mutta miten saan MouseX() ja MouseY() funktiot kertomaan sijainnin (0,0), kun osoitin on linjaviivojen risteyskohdassa, eikä täysin yläkulmassa.
Vaikeahkoon selitykseen koodit mukaan:

Code: Select all

SCREEN 800,600

Repeat

    Color cbgreen
    
    Text 700,10,"X: "+MouseX()
    Text 700,25,"Y: "+MouseY()
    
    Line 10,10,600,10
    Line 10,10,10,500
    
//Y    
        Line 10,20,20,20
    Line 10,40,20,40
    Line 10,60,20,60
    Line 10,80,20,80
    Line 10,100,30,100
        Line 10,120,20,120
    Line 10,140,20,140
    Line 10,160,20,160
    Line 10,180,20,180
    Line 10,200,30,200
        Line 10,220,20,220
    Line 10,240,20,240
    Line 10,260,20,260
    Line 10,280,20,280
    Line 10,300,30,300
        Line 10,320,20,320
    Line 10,340,20,340
    Line 10,360,20,360
    Line 10,380,20,380
    Line 10,400,30,400
        Line 10,420,20,420
    Line 10,440,20,440
    Line 10,460,20,460
    Line 10,480,20,480
    Line 10,500,30,500
    
//X
            Line 20,10,20,20
    Line 40,10,40,20
    Line 60,10,60,20
    Line 80,10,80,20
    Line 100,10,100,30
            Line 120,10,120,20
    Line 140,10,140,20
    Line 160,10,160,20
    Line 180,10,180,20
    Line 200,10,200,30
            Line 220,10,220,20
    Line 240,10,240,20
    Line 260,10,260,20
    Line 280,10,280,20
    Line 300,10,300,30
            Line 320,10,320,20
    Line 340,10,340,20
    Line 360,10,360,20
    Line 380,10,380,20
    Line 400,10,400,30
            Line 420,10,420,20
    Line 440,10,440,20
    Line 460,10,460,20
    Line 480,10,480,20
    Line 500,10,500,30
            Line 520,10,520,20
    Line 540,10,540,20
    Line 560,10,560,20
    Line 580,10,580,20
    Line 600,10,600,30
    
    
    
    DrawScreen 

Until EscapeKey()

koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2011)

Post by koodaaja »

Tuota, vähennät molemmista koordinaateista kymmenen. Silloin kohdasta 10,10 tulee kohta 0,0. Lisäksi koordinaatistoviivat voipi olla näppärämpi piirtää for-loopeilla seuraavankaltaisesti:

Code: Select all

SCREEN 800,600

Repeat

    Color cbgreen
    
    Text 700,10,"X: "+int(MouseX()-10)
    Text 700,25,"Y: "+int(MouseY()-10)
    
    Line 10,10,600,10
    Line 10,10,10,500
    
    For i = 0 To 29
        Line 20+i*20,10,20+i*20,20+10*((i+1) Mod 5 = 0)
        If i<25 then Line 10,20+i*20,20+10*((i+1) Mod 5 = 0),20+i*20
    Next i
    
    DrawScreen 

Until EscapeKey()
EDIT:

Huomasinpa tässä vielä hieman koodia katsellessani, että koordinaatiston väli 0-1 on puolta seuraavia pienempi. Lisäksi hiiren koordinaatit ovat pikseleinä eivätkä koordinaatiston yksikköinä. Tässäpä hieman viilailtu versio:

Code: Select all

SCREEN 800,600

Repeat

    Color cbgreen
    
    Text 700,10,"X: "+Float((MouseX()-10)*.05)
    Text 700,25,"Y: "+Float((MouseY()-10)*.05)
    
    Line 10,10,610,10
    Line 10,10,10,510
    
    For i = 0 To 29
        Line 30+i*20,10,30+i*20,20+10*((i+1) Mod 5 = 0)
        If i<25 then Line 10,30+i*20,20+10*((i+1) Mod 5 = 0),30+i*20
    Next i
    
    DrawScreen 

Until EscapeKey()
[/edit]
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Tyhmät kysymykset (I/2011)

Post by ItzRaines »

Kiitosta vain. Opin taas jotakin :D

Edit: Kuinka tuosta sais toimivan?
If MouseX()>30 Then MouseX()="x" - kirjain
Pitääkö MouseX() ja MouseY():lle tehdä omat "muuttujansa" vai voiko toteuttaa näin?
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

ItzRaines wrote:Kiitosta vain. Opin taas jotakin :D

Edit: Kuinka tuosta sais toimivan?
If MouseX()>30 Then MouseX()="x" - kirjain
Pitääkö MouseX() ja MouseY():lle tehdä omat "muuttujansa" vai voiko toteuttaa näin?
No et sinä ainakaan voi funktiolle asettaa arvoa, joten tarvitset uuden muuttujan.
Locked