Page 25 of 50

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Jun 08, 2011 10:22 pm
by Feuer
Kannattaa ehkä käyttää absoluuttisia polkuja tiedostoihin (C:\kansio\toinenkansio\mediansijainti\ukko.bmp) jos ei ole aivan varma että ymmärtää suhteellisten polkujen( (suoritushakemisto)\mediansijainti\ukko.bmp) toimintatavan. Näin tiedostojen olemassaolo on myös helpompi varmistaa. Pitää vain muistaa, etteivät absoluuttiset polut todennäköisesti toimi oman koneen ulkopuolella.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Jun 08, 2011 10:52 pm
by esa94
Laurenzo wrote: PS. Olen 9v
Se ei ole peruste käyttää niin suurta määrää hymiöitä että se vaatii kämmenen applikointia kasvoihin.

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 2:55 am
by MetalRain
Laurenzo wrote: Luulisin että ongelmaan ei löydy vastusta edellisistä viesteistä :oops: koska koodi on aivan sama
silloin kun se toimi. :oops: :)

PS. Olen 9v
Teinpäs sinulle havainnollistavan kuvan tiedostopolkujen käytöstä kartan latauskomennon ja kuvien latauskomennon yhteydessä. Tallennetun koodin paikka eli käytössä oleva työkansio vaikuttaa käytettävään suhteelliseen tiedostopolkuun. Käytin värejä merkitsemään suhteellisia tiedostopolkuja eri ajattavista kooditiedostoista.

EDIT: Kuva saattaa monien harmiksi olla kovin suuri, hitaiden yhteyksien takaa kurkkiville kärsivällisyyttä. (:

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 7:25 am
by Laurenzo
TOIMII :) poistin tilekartan ja tein uuden niin sitten lähti toimimaan. ;)

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 8:14 am
by Laurenzo
Uusi ongelma juna ei liiku minnekkään! :?:

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 8:28 am
by Jonez
Mietippä nyt hetken aikaa, onko tuossa viestissäsi tarpeeksi sisältöä, että voisimme oikeasti auttaa ongelmassasi?

Laita mieluiten koodia tänne niin ei tarvi arvailla.

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 9:19 am
by DJ-Filbe
Minulla on sivuillani kävijälaskuri, joka perustuu IP-osoitteisiin. Kuitenkin osalla käyttäjistä IP-osoite ei ole kiinteä, vaan vaihtuu aika ajoin. Olisiko järkevää tehdä keksi, johon tallennetaan IP, ja jos keksi on joskus eri kuin IP-osoite (IP vaihtui), poistetaan listasta vanha IP? Mitä mieltä olette?
Entä miten voisi luotettavasti laskea, jos samasta IP-osoitteesta sivua katsellaan eri koneilla?

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 12:13 pm
by Latexi95
DJ-Filbe wrote:Minulla on sivuillani kävijälaskuri, joka perustuu IP-osoitteisiin. Kuitenkin osalla käyttäjistä IP-osoite ei ole kiinteä, vaan vaihtuu aika ajoin. Olisiko järkevää tehdä keksi, johon tallennetaan IP, ja jos keksi on joskus eri kuin IP-osoite (IP vaihtui), poistetaan listasta vanha IP? Mitä mieltä olette?
Entä miten voisi luotettavasti laskea, jos samasta IP-osoitteesta sivua katsellaan eri koneilla?
Käytä eväisteitä. Ne ovat kone kohtaisia. Joskin niitä pystyyy muokkaamaa, mutta tässä tapauksessa sillä tuskin on mitään väliä. Ei sen kävijälaskurin tarvitse olla niin tarkka...

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 09, 2011 3:13 pm
by Laurenzo
Jonez wrote:Mietippä nyt hetken aikaa, onko tuossa viestissäsi tarpeeksi sisältöä, että voisimme oikeasti auttaa ongelmassasi?

Laita mieluiten koodia tänne niin ei tarvi arvailla.
Onglema korjattu En ollut muistanut laittaa loppuun draawscreeniä :oops:

Re: Tyhmät kysymykset (I/2011)

Posted: Sat Jun 11, 2011 12:18 pm
by Kumiankka
Mitenköhän onnistuisi kahden nelikulmion törmäyksentarkistus? Nelikulmioita pitäisi pystyä kääntelemään...
EDIT:

Ja siis objektijärjestelmää en tahtoisi käyttää...


BoxOverlap2

Posted: Sat Jun 11, 2011 4:24 pm
by MetalRain
Kumiankka wrote:Mitenköhän onnistuisi kahden nelikulmion törmäyksentarkistus? Nelikulmioita pitäisi pystyä kääntelemään...
EDIT:

Ja siis objektijärjestelmää en tahtoisi käyttää...

Tähän on varmaan joku simppelimpikin ratkaisu, mutta teinpä tälläisen joka katsoo onko nelikulmiot niin lähellä toisiaan että voivat ylipäänsä törmätä, sitten testaa onko nelikulmion keskipiste toisen nelikulmion sisällä ja sitten vielä tarkistaa leikkaako nelikulmioiden sivut toisiaan.

Code: Select all

DrawToWorld ON 

Repeat 

    t#=Timer()/15.0
    
    t1#=t1#+MouseMoveZ()*10

    If BoxOverlap2(MouseWX(),MouseWY(),100,50,t1#,0,0,40,200,-t#/1.5) Then
        Color cbred 
    Else 
        Color cbwhite 
    EndIf 
    
    Lock
        Box2(MouseWX(),MouseWY(),100,50,t1#)
        Box2(0,0,40,200,-t#/1.5)
    Unlock 

    DrawScreen 

Forever 

Function BoxOverlap2(x#,y#,w#,h#,a#,xx#,yy#,ww#,hh#,aa#)

    w2#=w#/2.0
    h2#=h#/2.0
    
    cx# = Cos(a#)
    cy# = Cos(a#+90.0)
    sx# = Sin(a#)
    sy# = Sin(a#+90.0)

    //ensimmäisen laatikon kärjet
    x1# = x# + cx#*w2# + cy#*h2#
    y1# = y# + sx#*w2# + sy#*h2#
    
    x2# = x# - cx#*w2# + cy#*h2#
    y2# = y# - sx#*w2# + sy#*h2#
    
    x3# = x# - cx#*w2# - cy#*h2#
    y3# = y# - sx#*w2# - sy#*h2#
    
    x4# = x# + cx#*w2# - cy#*h2#
    y4# = y# + sx#*w2# - sy#*h2#
    
    w1# = Abs(cx#*w2#) + Abs(cy#*h2#)
    h1# = Abs(sx#*w2#) + Abs(sy#*h2#)
    
    w2#=ww#/2.0
    h2#=hh#/2.0
    
    cx# = Cos(aa#)
    cy# = Cos(aa#+90.0)
    sx# = Sin(aa#)
    sy# = Sin(aa#+90.0)
    
    //toisen laatikon kärjet
    xx1# = xx# + cx#*w2# + cy#*h2#
    yy1# = yy# + sx#*w2# + sy#*h2#
    
    xx2# = xx# - cx#*w2# + cy#*h2#
    yy2# = yy# - sx#*w2# + sy#*h2#
    
    xx3# = xx# - cx#*w2# - cy#*h2#
    yy3# = yy# - sx#*w2# - sy#*h2#
    
    xx4# = xx# + cx#*w2# - cy#*h2#
    yy4# = yy# + sx#*w2# - sy#*h2#
    
    w3# = Abs(cx#*w2#) + Abs(cy#*h2#)
    h3# = Abs(sx#*w2#) + Abs(sy#*h2#)
    
    //onko niin kaukana toisistaan ettei edes voi törmätä?
    
    If Abs(x#-xx#)>(w1#+w3) Or Abs(y#-yy#)>(h1#+h3) Then Return False

    //onko toinen laatikko ensimmäisen sisällä?
    If PointInTriangle(xx#, yy#, x1#, y1#, x2#, y2#, x3#, y3#) Then Return True
    If PointInTriangle(xx#, yy#, x1#, y1#, x4#, y4#, x3#, y3#) Then Return True
    
    //leikkaako sivut 
    
    If LineSegIsect1(x1#, y1#, x2#, y2#, xx1#, yy1#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x1#, y1#, x2#, y2#, xx3#, yy3#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x1#, y1#, x2#, y2#, xx3#, yy3#, xx4#, yy4#) Then Return True 
    If LineSegIsect1(x1#, y1#, x2#, y2#, xx1#, yy1#, xx4#, yy4#) Then Return True 
    
    If LineSegIsect1(x3#, y3#, x2#, y2#, xx1#, yy1#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x3#, y3#, x2#, y2#, xx3#, yy3#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x3#, y3#, x2#, y2#, xx3#, yy3#, xx4#, yy4#) Then Return True 
    If LineSegIsect1(x3#, y3#, x2#, y2#, xx1#, yy1#, xx4#, yy4#) Then Return True 
    
    If LineSegIsect1(x3#, y3#, x4#, y4#, xx1#, yy1#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x3#, y3#, x4#, y4#, xx3#, yy3#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x3#, y3#, x4#, y4#, xx3#, yy3#, xx4#, yy4#) Then Return True 
    If LineSegIsect1(x3#, y3#, x4#, y4#, xx1#, yy1#, xx4#, yy4#) Then Return True 

    If LineSegIsect1(x1#, y1#, x4#, y4#, xx1#, yy1#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x1#, y1#, x4#, y4#, xx3#, yy3#, xx2#, yy2#) Then Return True 
    If LineSegIsect1(x1#, y1#, x4#, y4#, xx3#, yy3#, xx4#, yy4#) Then Return True 
    If LineSegIsect1(x1#, y1#, x4#, y4#, xx1#, yy1#, xx4#, yy4#) Then Return True 

    Return False 

End Function 

Function Box2(x#,y#,w#,h#,a#)

    w2#=w#/2.0
    h2#=h#/2.0
    
    cx# = Cos(a#)
    cy# = Cos(a#+90.0)
    sx# = Sin(a#)
    sy# = Sin(a#+90.0)

    //laatikon kärjet
    x1# = x# + cx#*w2# + cy#*h2#
    y1# = y# + sx#*w2# + sy#*h2#
    
    x2# = x# - cx#*w2# + cy#*h2#
    y2# = y# - sx#*w2# + sy#*h2#
    
    x3# = x# - cx#*w2# - cy#*h2#
    y3# = y# - sx#*w2# - sy#*h2#
    
    x4# = x# + cx#*w2# - cy#*h2#
    y4# = y# + sx#*w2# - sy#*h2#

    Line x1#, y1#, x2#, y2#
    Line x3#, y3#, x2#, y2#
    Line x4#, y4#, x3#, y3#
    Line x1#, y1#, x4#, y4#
    
End Function 

Function PointInTriangle(x#, y#, x1#, y1#, x2#, y2#, x3#, y3#)
   ab# = ((y - y1) * (x2 - x1) - (x - x1) * (y2 - y1)) / 1000.0
   bc# = ((y - y2) * (x3 - x2) - (x - x2) * (y3 - y2)) / 1000.0
   ca# = ((y - y3) * (x1 - x3) - (x - x3) * (y1 - y3)) / 1000.0
   If (ab * bc) > 0 And (bc * ca) > 0 Then Return True
   Return False
EndFunction

Function LineSegIsect1(ax#, ay#, bx#, by#, cx#, cy#, dx#, dy#)
   Return (((bx-ax)*(cy-ay)-(by-ay)*(cx-ax))*((bx-ax)*(dy-ay)-(by-ay)*(dx-ax)) < 0)(((dy-cy)*(cx-ax)-(dx-cx)*(cy-ay))*((dx-cx)*(by-cy)-(dy-cy)*(bx-cx)) < 0)
EndFunction
EDIT: Oletan että tarkoitit nelikulmiolla suorakulmiota, vaikka eipä tuon yleistäminen kaikille nelikulmioille ole vaikeaa.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 2:01 pm
by muuan ihminen joka pitää makkaroista
Hei.
minulla on aloitettuna peliprojekti, jossa yritän tehdä pelin, jossa syödään ukolla makkaroita, joita joko löytyy pitkin kenttää, tai kuin matopelissä, jossa ruokaa ilmestyy sitä mukaa milloin sitä syödään. Ongelmani on, miten saisin tehtyä syömisen. :) Tehdäänkö se yleensä törmäyksellä? Jos tehdään, niin miten? Voisiko joku tehdä esimerkin?
T. Muuan ihminen joka pitää makkaroista.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 3:00 pm
by MetalRain
muuan ihminen joka pitää makkaroista wrote:Hei.
minulla on aloitettuna peliprojekti, jossa yritän tehdä pelin, jossa syödään ukolla makkaroita, joita joko löytyy pitkin kenttää, tai kuin matopelissä, jossa ruokaa ilmestyy sitä mukaa milloin sitä syödään. Ongelmani on, miten saisin tehtyä syömisen. :) Tehdäänkö se yleensä törmäyksellä? Jos tehdään, niin miten? Voisiko joku tehdä esimerkin?
T. Muuan ihminen joka pitää makkaroista.
Voit esimerkiksi katsoa Distancella tai Distance2:lla ovatko makkara ja ukko tarpeeksi lähellä toisiaan.

Code: Select all

makkara = LoadObject("media\cow.bmp")
ukko = LoadObject("media\guy.bmp")

Repeat
    
    //ohjataan ukkoa hiirellä
    PositionObject ukko,MouseWX(),MouseWY()
    
    //jos mies ja makkara on tarpeeksi lähellä toisiaan
    If Distance2(ukko,makkara)<16 Then 
    
        //kasvatetaan syötyjen makkaroiden määrää
        makkaroita_syöty = makkaroita_syöty + 1
        
        //liikutetaan makkara uuteen paikkaan
        PositionObject makkara,Rand(-190,190),Rand(-140,140)
        
        //muutetaan ikkunan otsikkoa
        SetWindow "Makkaroita mussutettu: "+makkaroita_syöty 
    EndIf 

    DrawScreen 

Forever

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 3:02 pm
by koodaaja
Myös ObjectsOverlapilla voi selvittää, ovatko kaksi objektia päällekkäin.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 3:57 pm
by muuan ihminen joka pitää makkaroista
Kiitos nopeasta vastauksesta!

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 5:36 pm
by Laurenzo
Kuinka voin tehdä aikarajan peliini ?
Eli kenttä täytyy läpäistä esim. Minuutissa.
jos aikaraja ylittyy peli loppuu?

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 5:56 pm
by axu
Laurenzo wrote:Kuinka voin tehdä aikarajan peliini ?
Eli kenttä täytyy läpäistä esim. Minuutissa.
jos aikaraja ylittyy peli loppuu?
Käytä Timer() komentoa, jotta saat senhetkisen ajankohdan selville (palauttaa ajan koneen käynnistymisestä millisekunteina). Tallenna aloitusajankohta muuttujaan, ja saat pelatun ajan yksinkertaisesti Nykyinen_Aika - Aloitus_Aika. Sitten tarkkailet josko on jo pelattu yli 60000 millisekuntia (60 sekuntia * 1000). Koodina:

Code: Select all

StartTime = Timer()
Repeat
    CurTime = Timer() - StartTime
    Text 1, 1, CurTime
    Drawscreen
Until CurTime >= 60000

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 6:00 pm
by muuan ihminen joka yhä tykkää makkarasta
Hei.
Minulle aikaisemmin vastattiin kysymykseeni makkaransyöntipeliin liittyen skriptillä, jonka ohessa luki miten saa ikkunan otsikkoon lukemaan syötyjen makkaroiden määrän. Haluaisin kuitenkin sen näkyvän tekstinä pelissä, esim. "makkaroita syöty 5". Mitenköhän se onnistuisi? tiedän periaatteen, mutta en osaa käytännössä toteuttaa sitä :? .
T. eräs heppu joka vieläkin jaksaa pitää makkaroista.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 6:30 pm
by valscion
muuan ihminen joka yhä tykkää makkarasta wrote:Hei.
Minulle aikaisemmin vastattiin kysymykseeni makkaransyöntipeliin liittyen skriptillä, jonka ohessa luki miten saa ikkunan otsikkoon lukemaan syötyjen makkaroiden määrän. Haluaisin kuitenkin sen näkyvän tekstinä pelissä, esim. "makkaroita syöty 5". Mitenköhän se onnistuisi? tiedän periaatteen, mutta en osaa käytännössä toteuttaa sitä :? .
T. eräs heppu joka vieläkin jaksaa pitää makkaroista.
Kannattaa käyttää Text-komentoa.

Code: Select all

makkaroita = 0
Repeat
    // Piirretään tekstiä ruudulle koordinaatteihin x=0 ja y=0. Merkkijonoon "Makkaroita: " lisätään perään makkaroiden määrä "makkaroita"-muuttujassa.
    Text 0,0, "Makkaroita: " + makkaroita

    // Vähän infoa miten makkaroita saa lisää, nyt x=0 ja y=13
    Text 0,13, "Paina välilyöntiä lisätäksesi makkaroiden määrää"

    // Jos painetaan välilyöntiä, lisätään makkaroita yhdellä
    If KeyHit( cbKeySpace ) Then makkaroita = makkaroita + 1

    DrawScreen
Forever 
EDIT: Suosittelen rekisteröitymistä foorumeille, näin saat viesteillesi suuremman painoarvon sekä voit halutessasi muokata jo lähetettyä viestiä ;)

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Jun 12, 2011 10:04 pm
by pitää makkarasta
kiitos paljon! Luulen, että osasin sentään ainakin laittaa kysymykseni oikealle palstalle ;)