Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Pekka

Re: Tyhmät kysymykset

Post by Pekka »

Oho, eipäs tietenkään ole, mutta tuo oli kyllä todella hidasta, ainakin minun koneellani.
Guest

Re: Tyhmät kysymykset

Post by Guest »

Teen sivultakuvattua avaruustaistelupeliä.
Haluan saada mun aluksen liikkumaan ylöspäin jos objekti aim on sen yläpuolella ja alaspäin jos se on sen alapuolella.
Se menee jostain syystä nyt niin, että alus liikkuu ylöspäin jos aim on sen vasemmalla puolella ja päinvastoin.

Code: Select all

FrameLimit 45

oma_alus=LoadObject("Media\ship.bmp", 60)
aim=LoadObject("Media\crosshair.bmp")
TranslateObject oma_alus,-150,0

Repeat

  
    aimvert = MouseWX()
    aimhor = MouseWY()
    PositionObject aim,aimvert,aimhor
    PointObject oma_alus,aim
    alusvert = ObjectX(oma_alus) 
    If aimvert < alusvert Then TranslateObject oma_alus,0,-2
    If aimvert > alusvert Then TranslateObject oma_alus,0,2

    DrawScreen

Until EscapeKey()
End
Pekka

Re: Tyhmät kysymykset

Post by Pekka »

FrameLimit 45

oma_alus=LoadObject("Media\ship.bmp", 60)
aim=LoadObject("Media\crosshair.bmp")
TranslateObject oma_alus,-150,0

Repeat


aimvert = MouseWX()
aimhor = MouseWY()
PositionObject aim,aimvert,aimhor
PointObject oma_alus,aim
alushor = ObjectY(oma_alus)
If aimhor < alushor Then TranslateObject oma_alus,0,-2
If aimhor > alushor Then TranslateObject oma_alus,0,2

DrawScreen

Until EscapeKey()
End

Tuon pitäisi toimia.
Guest

Re: Tyhmät kysymykset

Post by Guest »

kiitos se toimii. :roll:
Maamyyrä
Newcomer
Posts: 27
Joined: Thu Jun 05, 2008 10:59 am

Re: Tyhmät kysymykset

Post by Maamyyrä »

Minun ongelmanani on laatikko. Kun piirrän sen ruudun alareunaan se näkyy vilaukselta ja sitten se katoaa. Olen huomannut että repeat komento tuhoaa laatikon. Miten saisin laatikon pysymään repeat komennosta huolimatta :?: Jos se on repeatin sisällä se kyllä näkyy muttaa vilkkuu häiritsevästi. :(

APUA TARVITAAN

Juu etsin asiaa haulla mutta en löytänyt.
One object to rule them all

Just don't kill the Master
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Code: Select all

Repeat
    Box 10, 10, 20, 20
    DrawScreen
Forever
Ja ei, repeat-komento ei tuhoa laatikkoa.

Vaikuttaapi vähän siltä, ettet ole sisäistänyt loopin käsitettä kovin hyvin. Eli kaikkea, mikä on repeatin ja foreverin välissä, toistetaan. Jos jotain ei toisteta, se tapahtuu kerran. Eli jos piirrät laatikon loopin ulkopuolella, se piirretään tasan kerran. Se siis välähtää näytöllä.

Ja kaikki mikä on näytöllä, on näytöllä kunnes seuraavan kerran komennetaan DrawScreen tai Cls. Silloin näyttö tyhjennetään ja (drawscreenin tapauksessa) piirretään uudelleen. Eli silloin vanha laatikko katoaa, ja jollei sitä piirretä uudestaan, se ei mistään näytölle ilmesty.
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Niin kuinkas kuvan saa pyörimään?
Tällä tavoin se ainakin on todella hidas:

kulma=0
repeat

if leftkey() then kulma+1 then rotateimage kuva,kulma
if rightkey() then kulma-1 then rotateimage kuva,kulma

drawscreen
forever
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: Tyhmät kysymykset

Post by Nemesis »

Ja jotta FPS ei nousisi kovin korkealle, kannattaa kuva kiertää etukäteen. Ks. manuaalin esimerkki komennolle RotateImage. Miksihän muuten kuvan pyörittäminen on hidasta, mutta objekteilla sujuu nopeasti?
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

No tuossa on tulos mitä sain aikaseksi kun yritin väkertää tuon manuaalin esimerkin avulla, mutten vieläkään käsitä miten saan tuon tatin kääntymään kun painan vasemmalle tai oikealle.

Code: Select all

Dim kuvat(360)
alus=LoadImage("media\tatti.bmp")


x=10
y=10

Smooth2D ON 

For i=0 To 360
kuvat(i)=CloneImage(alus)
RotateImage kuvat(i),-i
Next i

Repeat



Text 10,100,FPS()


If UpKey() Then y-1
If DownKey() Then y+1
If LeftKey() Then DrawImage kuvat(angle),x,y Then x-1
If RightKey() Then x+1

angle=WrapAngle(angle+1)

DrawImage alus,x,y

DrawScreen

Forever
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: Tyhmät kysymykset

Post by Nemesis »

Suosittelisin käyttämään objekteja. Coolbasicissa on niiden käsittelyyn niin hyvät funktiot valmiina.
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Maamyyrä, jos luuppi ei kerta miellytä, etkä sitä tarvitse niin kokeile tätä:

Code: Select all

Box 10,10,20,20
DrawScreen OFF
WaitKey 
Nemesis, kannattaa heti irtautua objekteista, jos on siihen valmis. Ne ovat liiankin helppo tapa koodata. Aloittelijoille tietysti hyvä valinta.
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Nemesis wrote:Suosittelisin käyttämään objekteja. Coolbasicissa on niiden käsittelyyn niin hyvät funktiot valmiina.
Juu, niiden käyttö minulta sujuukin jo jotenkin, mutta ajattelin yrittää luolalentelypeliä, jossa kartan on aika pakko olla kuva. Mutta taitaa sittenkin olla paras pysyä näissä objekteissa vielä :ugeek:
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

Sepi wrote:
Nemesis wrote:Suosittelisin käyttämään objekteja. Coolbasicissa on niiden käsittelyyn niin hyvät funktiot valmiina.
Juu, niiden käyttö minulta sujuukin jo jotenkin, mutta ajattelin yrittää luolalentelypeliä, jossa kartan on aika pakko olla kuva. Mutta taitaa sittenkin olla paras pysyä näissä objekteissa vielä :ugeek:
Kartan?
Mikäs pakko sitä karttaa on pyärittää?
Huuda mun ip:tä!
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Sanoinko muka että olin sitä karttaa pyörittämässä? Aluksia olisi tarkoitus pyörittää ja niiden alustenkin pitäisi olla kuvia, koska kuva-objekti törmäykset ovat vaikeita tai mahdottomia.
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: Tyhmät kysymykset

Post by MikkoK »

Auttakaa nyt joku edes tuonne mun aiheeseen PLZ

Code: Select all

#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja »

Sepi wrote:Sanoinko muka että olin sitä karttaa pyörittämässä? Aluksia olisi tarkoitus pyörittää ja niiden alustenkin pitäisi olla kuvia, koska kuva-objekti törmäykset ovat vaikeita tai mahdottomia.
Sovellettu coolbasicin esimerkistä:

Code: Select all

Dim images(360)




Text 0,0,"Pre-calculating.. Please wait"
DrawScreen

Smooth2D ON

'First Pre-calculate all images 
masterimage= LoadImage("Media\cow.bmp")

'Generate 360 rotated versions from the master Image 
For i=0 To 360
    images(i)=CloneImage(masterimage)
    
    RotateImage images(i), -i
Next i

Color cbblack
ClsColor cbwhite
x = 200
y = 150
'The actual game-loop 
Repeat

    'Draw at the center
    x = x+((UpKey()-DownKey())*3*Sin(angle+90))
    y = y+((UpKey()-DownKey())*3*Cos(angle+90))
    DrawImage images(angle),x,y
    

    'change the angle
    angle=WrapAngle(angle+(LeftKey()-RightKey())*5)

    Text 0,0,"Angle: "+angle
    Text 200,0,FPS()

    DrawScreen

Until EscapeKey()
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Kiitoksia. Näyttää vaan sen verran vaikeilta nuo Wrapangle sini kosini jutut, että täytynee varmaan jokunen vuosi odotella ennen kuin yrittää uudestaan tätä projektia aloittaa :lol:
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: Tyhmät kysymykset

Post by atomimalli »

Kyllä ne oppii kun ei suoraan mene asiaa.

Tässä yksi tapa oppia sinit ja cosinit: http://edu.pyhaselka.fi/matikka/ohj20.htm
tai ainakin jotain niiden luonteesta.

huomaa että säde on aina saman pituinen ;)
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

Sepi wrote:Sanoinko muka että olin sitä karttaa pyörittämässä? Aluksia olisi tarkoitus pyörittää ja niiden alustenkin pitäisi olla kuvia, koska kuva-objekti törmäykset ovat vaikeita tai mahdottomia.
Poista mahdoton-sana.
Mut tässä kuvilla,löysin koneeltani;)
(en ole siis itse tätä tehnyt)

Code: Select all

SCREEN 640,480
DrawToWorld OFF,ON,OFF //Piirtää kuvat keskelle ruutua.
HotSpot ON //Pistää kuvan piirron keskelle.

Tausta = LoadImage("Media\level.bmp") //Lataa taustan.

Dim Alus(360) //Luo alukselle taulukon 360 asteelle.

Alus(0) = LoadImage("Media\ship.bmp") //Lataa aluksen.

//Luo alukselle kääntyvyyden.
For i=1 To 360
    Alus(i) = CloneImage(Alus(0))
    RotateImage Alus(i), i
Next i

Const lNopeus = 0.2 //Liikkuvuusnopeus.
Const lNopeusMax = 5 //Max liikkuvuusnopeus.
Const kNopeus = 5 //Käännösnopeus.

X# = 0.0 //Akseli X.
Y# = 0.0 //Akseli Y.

VanhaX# = 0.0 //Akseli X törmäystä varten.
VanhaY# = 0.0 //Akseli Y törmäystä varten.

Kulma = 0 //Kulma.

NopeusX# = 0.0 // Nopeus akseli X.
NopeusY# = 0.0 // Nopeus akseli Y.

Repeat

    //Piirtää kuvat.
    DrawImage Tausta, 0, 0 //Piirretään ennen kaikkea muuta, jotta se on alimmaisena.
    DrawImage Alus(Kulma), X, Y //Piirretään alus

    //Päivitetään nopeus ja törmäys.
    VanhaX = X
    VanhaY = Y
    X = X+NopeusX
    Y = Y+NopeusY

    If ImagesCollide(Tausta, 0, 0, 0, Alus(0), X, Y, 0) Then
        X = VanhaX
        Y = VanhaY
        NopeusX = NopeusX*-0.6
        NopeusY = NopeusX*-0.6
    End If

    //Eteenpäin -systeemi.
    If UpKey() Then
        NopeusX = NopeusX+Cos(Kulma)*lNopeus
        NopeusY = NopeusY+Sin(Kulma)*lNopeus
    End If
    
    //Tarkistaa mennäänkö liian nopeasti.
    If NopeusX > lNopeusMax Then NopeusX - lNopeus
    If NopeusY > lNopeusMax Then NopeusY - lNopeus
    If NopeusX < -lNopeusMax Then NopeusX + lNopeus
    If NopeusY < -lNopeusMax Then NopeusY + lNopeus

    //Kääntyminen.
    If LeftKey() Then Kulma = Kulma-kNopeus
    If RightKey() Then Kulma = Kulma+kNopeus
    
    Kulma = TarkistaKulma(Kulma) //AINA sen jälkeen, kun kulmaa on muutettu, jottei taulukkoa lueta yli!
    
    PositionCamera X, -Y //Pistää kameran seuraamaan alusta.

DrawScreen
Forever

Function TarkistaKulma(Kulma)
    //Katsoo onko kulma yli 360 -rajan.
    While Kulma > 360
        Kulma-360
    Wend

    //Katsoo onko kulma ali 0 -rajan.
    While Kulma < 0
        Kulma+360
    Wend

    Return Kulma //Palauttaa tarkistetun kulman.
End Function 
Huuda mun ip:tä!
Osaamaton

Erpekele (Perkele)

Post by Osaamaton »

En ole varma käsitinkö oikein, mutta tänne siis postataan kaikki "turhat" ongelmat joihin ei muualta löydä vastausta?
Ok, minullakin olisi eräs:
FrameLimit 40 'rajoita nopeutta

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
muzak = LoadSound ("Media\SK_Battle.mp3")
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
botti = LoadObject ("Media\guy.bmp",75)
SetupCollision guy, kartta, 2, 5, 3

Repeat
PlaySound muzak
'Ukon ohjaus
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
If Timer() > alkuaika + 1000 Then
newangle=Rand(360)
alkuaika = timer()
EndIf
RotateObject botti,CurveAngle(newangle,ObjectAngle(botti),10)
MoveObject botti,1

UpdateGame

CloneCameraPosition ukko

DrawScreen

Forever


Miksi tuo alkaa valittaa jo tässä vaiheessa, että jokaisesta asiasta, että Can't Load?
(Pistin vain osan, etteivät ne eräät ja tietyt muutkin osaamattomat kopioisi kaikkea itselleen oppimatta mitään) ;)
Locked