Tyhmät kysymykset (II/2009)

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

Re: Tyhmät kysymykset (II/2009)

Post by Awaclus »

Feuer wrote:Ei liity cb:hen, ja jos joku osaa ehdottaa parempaa aluetta, ehdottakoon. Mitä tarkoittaa "koostefunktiot"?
Kliks.
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: Tyhmät kysymykset (II/2009)

Post by Bambi »

Yritän ladata muuttujia tiedostosta, mutta arvot eivät silti muutu.

Code: Select all

... (muuta koodia..)

PAINOVOIMA# = 0
asd = 0 'bullettien rajotus
asd2 = 0 'ostamisen rajotusaika
aika = 0 'vihujen spawniaika
    
Repeat
    If valikko = 0 Then 
        Gosub Valikko : Else 
    
    Gosub Nappaimet
    Gosub Viholliset
    Gosub Bulletit
    Gosub Omat
    
    Text 0,0,"FPS: "+FPS()+" gravity: "+PAINOVOIMA+" asd: "+asd+" asd2: "+asd2+" timer: "+aika
    EndIf 
    DrawScreen
Forever 

...

Alusta:
    ClearObjects 
    
    If FileExists("Data\txt\var.txt") Then 
        f = OpenToRead("Data\txt\var.txt")
            PAINOVOIMA = ReadFloat(f)
            asd = ReadInt(f)
            asd2 = ReadInt(f)
            aika = ReadInt(f)
        CloseFile f
    EndIf 
    
    voima# = 0 'lähtövoima
    
    ...
Return 

...
Tiedosto, josta muuttujat pitäisi ladata, on tämän näköinen:

Code: Select all

-0.1
1
1
2000
Mikä tuossa voisi mahdollisesti olla väärin? Mulla loppuu ainaskin jo keinot kesken. :P
ristis
Moderator
Moderator
Posts: 101
Joined: Sat Sep 08, 2007 4:32 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by ristis »

Bambi wrote:Yritän ladata muuttujia tiedostosta, mutta arvot eivät silti muutu.

-----

Mikä tuossa voisi mahdollisesti olla väärin? Mulla loppuu ainaskin jo keinot kesken. :P

Tiedot on tekstitiedostossa riveittäin. Laita Float(ReadLine(f)) ja/tai Int(ReadLine(f))
Sitten sen pitäisi toimia.


ReadInt() ja ReadFloat() lukevat tiedostosta osoittimen kohdalta suoraan dataa.
Voit kokeilla kirjottaa WriteIntillä tekstitiedostoon numeroita ja sitten avata sen Notepadillä niin et näekään numeroita vaan sen sijaan sotkua.
Eli tällöin tiedostossa on vain dataa pötkössä ilman kaikkea muuta muotoilu yms sälää mitä tekstitiedostotkin sisältävät.
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: Tyhmät kysymykset (II/2009)

Post by Bambi »

ristis wrote: Tiedot on tekstitiedostossa riveittäin. Laita Float(ReadLine(f)) ja/tai Int(ReadLine(f))
Sitten sen pitäisi toimia.


ReadInt() ja ReadFloat() lukevat tiedostosta osoittimen kohdalta suoraan dataa.
Voit kokeilla kirjottaa WriteIntillä tekstitiedostoon numeroita ja sitten avata sen Notepadillä niin et näekään numeroita vaan sen sijaan sotkua.
Eli tällöin tiedostossa on vain dataa pötkössä ilman kaikkea muuta muotoilu yms sälää mitä tekstitiedostotkin sisältävät.
No jopas, empä olis tommosta keksiny. :) Kiitoksia avusta, nyt toimii hyvin!
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Joo.. eli olen pähkäillyt tämän ongelman kanssa jo päivän tai toisenkin.. Kun tyyppi menee datanumeron numero 1 päälle niin end?.. esimerkki ois tässä tapauksessa kaikista paras..

kenties tälleen?

Code: Select all

If pelaaja = GetMap2(3,pelaajaX,pelaajaY)=1 Then End
Ei toimi..

tai täälleen?

Code: Select all

If GetMap2(3,pelaajaX,pelaajaY)=1 Then End
ja ei toimi tämäkään..

aikamoisen turhauttavaa.. :|
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

GetMap2 käyttää tilekoordinaatteja. Elikkä laitappa näin:

Code: Select all

If GetMap(3,pelaajaX,pelaajaY) = 1 Then End
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Jookiitti. Mutt puuttuukos mulla jotain?

ei pelkkä tämä koodi taida riittää? eli on pelaaja niminen objecti ja se ku menee tuon datanumeron päälle peli sammuu.. Miten tuo pitäisi toteuttaa?

Code: Select all

If GetMap(3,pelaajaX,pelaajaY)=1 Then End
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

rami123 wrote:Jookiitti. Mutt puuttuukos mulla jotain?

ei pelkkä tämä koodi taida riittää? eli on pelaaja niminen objecti ja se ku menee tuon datanumeron päälle peli sammuu.. Miten tuo pitäisi toteuttaa?

Code: Select all

If GetMap(3,pelaajaX,pelaajaY)=1 Then End

Code: Select all

If GetMap(3,ObjectX(pelaaja),ObjectY(pelaaja)) = 1 Then End
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Kiitos paljon!! :mrgreen: Ei tullut edes mieleen tuollainen systeemi..Opinpaha taas uutta. kiitos
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Miten voisin toteuttaa systeemin, jossa käyttäjän kirjoittaessa tietyn sanan, avaa ohjelma tekstitiedoston (Notepad-tiedosto olisi unelma ; ).
"Baby," I said. "I'm a genius but nobody knows it but me."
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (II/2009)

Post by MaGetzUb »

Hene wrote:Miten voisin toteuttaa systeemin, jossa käyttäjän kirjoittaessa tietyn sanan, avaa ohjelma tekstitiedoston (Notepad-tiedosto olisi unelma ; ).
Vaikka esim näin:

Code: Select all

tiettysana$ = "Notepaddi"
Repeat
Text 0,0,"Kirjoita tietty sana:"
Locate 0,15
s$ = Input("Sana: ")
If Lower(s$) = Lower(tiettysana$) And KeyHit(28) Then Execute "Notepad"
Drawscreen
Forever 
;)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by valscion »

Hene wrote:Miten voisin toteuttaa systeemin, jossa käyttäjän kirjoittaessa tietyn sanan, avaa ohjelma tekstitiedoston (Notepad-tiedosto olisi unelma ; ).
Vaikka tuossa MGZ jo vastasikin, niin tässäpä vielä vähän hienostuneempi esimerkki =)

Code: Select all

Repeat

	// Kysy tekstiä
	syöte$ = Input("Avaa: ")
	
	If KeyHit(cbkeyReturn) Then
		// Jos painettiin entteriä, niin...
		If FileExists(syöte$) And IsDirectory(syöte$)=0 Then
			// Jos "syöte"-muuttujan tekstijonon perusteella
			// löydetään jokin tiedosto (ei kansio), niin...

			// Avataan notepad.exe, tiedostopolku perään lainausmerkeissä
			Execute "notepad.exe " + Chr(34) + CurrentDir() + syöte$ + Chr(34)
		EndIf
		
		// Nollataan syöte
		syöte$ = ""
		// Suljetaan Inputti
		CloseInput
	
	EndIf
	
	DrawScreen
		
Forever
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
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Miten sellanen datanumerosta datanumeroon siirtyminen tapahtuu? elikkä tyyppi lähtee kävelemään numerosta 1 numeroon kakkonen joka on muutaman esteenki takana? Onko vaikea toteuttaa? :| itsellä ei ole minkäänlaista hajua miten tehdä..
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by kaneli2000 »

Miten voin tehdä seuraavan: kahdella kuvalla on omakoodaamani "törmäystunnsitus". Kun toinen kuva menee toista kuvaa päin, se pysähtyy. Simple. Mutta kun tällä toisella kuvalla(ukko) on painovoima, ja kun se on tarpeeksi kova, kuva menee toisen kuvan(maa) sisään. Kyllähän sen sieltä hyppimällä saa pois, mutta ei ole kovin edustavan näköistä. Saisiko siis jotenkin laskettua, että ukko-kuva voi mennä vain tasan yhden pikselin kuvan sisään, eikä yhtään syvemmälle (tämä siksi, että surkean fysiikkamoottorini hyppymekanismi toimii niin, että jos olet maassa (aka maan sisässä) ja painat nappia, voit hypätä)?
I see the rainbow rising
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

Sinun pitää liikuttaa kuvaa vähemmän kerralla. Tässä vähän pseudokoodia:

Code: Select all

For i = 1 To 4
  x = x + (nopeus / 4)
  y = y + (nopeus / 4)

  tarkistaTörmäys()
Next i
User avatar
skinkken
Advanced Member
Posts: 453
Joined: Sat Sep 01, 2007 4:00 pm
Location: Helsinki

Re: Tyhmät kysymykset (II/2009)

Post by skinkken »

kaneli2000 wrote:Miten voin tehdä seuraavan: kahdella kuvalla on omakoodaamani "törmäystunnsitus". Kun toinen kuva menee toista kuvaa päin, se pysähtyy. Simple. Mutta kun tällä toisella kuvalla(ukko) on painovoima, ja kun se on tarpeeksi kova, kuva menee toisen kuvan(maa) sisään. Kyllähän sen sieltä hyppimällä saa pois, mutta ei ole kovin edustavan näköistä. Saisiko siis jotenkin laskettua, että ukko-kuva voi mennä vain tasan yhden pikselin kuvan sisään, eikä yhtään syvemmälle (tämä siksi, että surkean fysiikkamoottorini hyppymekanismi toimii niin, että jos olet maassa (aka maan sisässä) ja painat nappia, voit hypätä)?
Eli kuten sly jack sanoi niin kannattaa laittaa vaikka:

Code: Select all

For i=1 To yliike
    liikutetaan ukkoa 1 pikseli
    tarkistus onko maassa jos on niin Exit ja kaikkea muuta
Next i
yliike on siis ukon nopeus y-suunnassa

Ainiinja yliike pitää tietenkin olla float (#)
Valmiit pelit: House of Horrors , Battle Zone , Über Ball , Itdoti , Space Chaos , Bloxxplosives
Projekti jota teen ehkä joskus vielä: viewtopic.php?f=11&t=2636 <-- Tämä rivi päivitetty 14.1.2013
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by kaneli2000 »

skinkken wrote:
kaneli2000 wrote:Miten voin tehdä seuraavan: kahdella kuvalla on omakoodaamani "törmäystunnsitus". Kun toinen kuva menee toista kuvaa päin, se pysähtyy. Simple. Mutta kun tällä toisella kuvalla(ukko) on painovoima, ja kun se on tarpeeksi kova, kuva menee toisen kuvan(maa) sisään. Kyllähän sen sieltä hyppimällä saa pois, mutta ei ole kovin edustavan näköistä. Saisiko siis jotenkin laskettua, että ukko-kuva voi mennä vain tasan yhden pikselin kuvan sisään, eikä yhtään syvemmälle (tämä siksi, että surkean fysiikkamoottorini hyppymekanismi toimii niin, että jos olet maassa (aka maan sisässä) ja painat nappia, voit hypätä)?
Eli kuten sly jack sanoi niin kannattaa laittaa vaikka:

Code: Select all

For i=1 To yliike
    liikutetaan ukkoa 1 pikseli
    tarkistus onko maassa jos on niin Exit ja kaikkea muuta
Next i
yliike on siis ukon nopeus y-suunnassa

Ainiinja yliike pitää tietenkin olla float (#)
Öh, ei oikein toimi ainakaan tavalla jolla sovelsin tuota :#. Ei saisi yhtään selvempänä?

Tuohan siis ymmärtääkseni perustuu siihen, että For...Next looppi suoritetaan monia kertoja, jolloin saadaan tunnistus joka framelle, mutta en vaan saanut toimimaan.

Koodina (sovelsin aika paljon, menikö yhtään oikein):

Code: Select all

    //if on the ground then don't go down (tämä tässä siksi että jostain syystä ohjelma ei nollaa yPluyssaa maassa, vaikka se määritetään :#)
    If maassa = False Then yPlus# = yPlus# - GRAVITY
    
    //guys collide -> feet
    For i = 1 To yPlus#
        guyY# = guyY# - yPlus#
        
        If ImagesCollide(guyhit_feet,guyX#+(31/2),guyY#+38,0,hitimg,0,0,0) Then
            maassa = True
            yPlus# = 0
        Else
            maassa = False
        EndIf
    Next i
I see the rainbow rising
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

Idea on siis siinä, että käyt liikutuskoodin For...Next-luupilla esim. 4 kertaa läpi ja joka kierroksella liikutat hahmoa tarvittavaan suuntaan neljäsosan (Jos siis For-luuppi käydään neljä kertaa läpi. Jos viisi, niin silloin viidesosa.) siitä määrästä, kuinka paljon haluat sen liikkuvan. Esim. jos haluat pelaajan liikuvan 5 pikseliä yhden framen aikana, se menisi pseudokoodina näin:

Code: Select all

For i = 1 To 4
  pelaajaX = pelaajaX + (5 / 4)    //5 on liikuttavien pikseleiden määrä ja 4 on For-luupin läpikäyntien määrä.
Next i
Elikkäs koitappa sitä sinun koodiasi näin:

Code: Select all

        //if on the ground then don't go down (tämä tässä siksi että jostain syystä ohjelma ei nollaa yPluyssaa maassa, vaikka se määritetään :#)
        If maassa = False Then yPlus# = yPlus# - GRAVITY
       
        //guys collide -> feet
        For i = 1 To 4
            guyY# = guyY# - (yPlus# / 4)
           
            If ImagesCollide(guyhit_feet,guyX#+(31/2),guyY#+38,0,hitimg,0,0,0) Then
                maassa = True
                yPlus# = 0
            Else
                maassa = False
            EndIf
        Next i
EDIT:

Ehkä vähän epäselvästi selostettu, mutta toivottavasti ymmärsit. =)

User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by kaneli2000 »

Sly_Jack0 wrote:Idea on siis siinä, että käyt liikutuskoodin For...Next-luupilla esim. 4 kertaa läpi ja joka kierroksella liikutat hahmoa tarvittavaan suuntaan neljäsosan (Jos siis For-luuppi käydään neljä kertaa läpi. Jos viisi, niin silloin viidesosa.) siitä määrästä, kuinka paljon haluat sen liikkuvan. Esim. jos haluat pelaajan liikuvan 5 pikseliä yhden framen aikana, se menisi pseudokoodina näin:

Code: Select all

For i = 1 To 4
  pelaajaX = pelaajaX + (5 / 4)    //5 on liikuttavien pikseleiden määrä ja 4 on For-luupin läpikäyntien määrä.
Next i
Elikkäs koitappa sitä sinun koodiasi näin:

Code: Select all

        //if on the ground then don't go down (tämä tässä siksi että jostain syystä ohjelma ei nollaa yPluyssaa maassa, vaikka se määritetään :#)
        If maassa = False Then yPlus# = yPlus# - GRAVITY
       
        //guys collide -> feet
        For i = 1 To 4
            guyY# = guyY# - (yPlus# / 4)
           
            If ImagesCollide(guyhit_feet,guyX#+(31/2),guyY#+38,0,hitimg,0,0,0) Then
                maassa = True
                yPlus# = 0
            Else
                maassa = False
            EndIf
        Next i
EDIT:

Ehkä vähän epäselvästi selostettu, mutta toivottavasti ymmärsit. =)

Ei tuo mitenkään kovin epämääräistä kyllä ollut. Nyt tajusin ja toimii, kiitos suuresti :D.
I see the rainbow rising
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

Ehkei niin tyhmä kysymys mutta kuitenkin. Eli ongelmana on "heilurin fysiikka". Eli siis ongelma on se etten osaa laskea narun heiluvan pään x- ja y:tä. Tai no joo osaan... Mutta siis että jos se lähetetään esim kulmasta 330, ja pituus on sata niin mikä on voima jolla se sitten liikkuu ja kuinka paljon se sitten vähitellen hiipuu... Ei tarvitse lähettää mitään tuhatrivistä koodia, vaan ihan suora selkeä selitys tämän laskemiseen riittää...
Image
Locked