Page 118 of 154

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 12:31 pm
by Awaclus
Toivoisin vastausta kysymykseeni... Miksi ampuminen mavittaa?

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 1:00 pm
by Viltzu
No ratkaisua siihen, miten asia korjataan, en keksinyt :D Mutta mavi tulee tästä koodi rivistä,
Rivi 133: CloneObjectPosition uusAmmus\obj, heebo ;)

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 4:15 pm
by Awaclus
Weird. Toimi ihan hyvin ennen kun aloin sähläämään :geek: tuon valikon kanssa.

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 4:37 pm
by Dande
Chaosworm wrote:Weird. Toimi ihan hyvin ennen kun aloin sähläämään :geek: tuon valikon kanssa.
Johtuu siitä, että kun valikossa hyppäät gotolla themaingame-kohtaan ja skippaat mm. konekivaarintehot-muuttujan alustuksen ykköseksi, tämän takia uusAmmus\obj-muuttujaa ei koskaan luodakaan, mutta sitä yritetään kuitenkin sijoittaa heebon kohdalle.
Korjaus on yksinkertainen: muista alustaa konekivaarintehot muuttuja ykköseksi

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 6:50 pm
by Character
Miten tehtävän b5 voisi toteuttaa? :P

Re: Tyhmät kysymykset

Posted: Sat Jan 24, 2009 7:05 pm
by Jani
Character wrote:Miten tehtävän b5 voisi toteuttaa? :P
KeyDown() ja KeyHit() ;)

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 9:36 am
by kysymys
Kuinka saisin jatkettua tekstitiedostoon kirjoittamista samasta kohdasta, kun se sulkemisen jälkeen jäi?
Joudun kirjoittamaan writeline-komennolla tietoja tekstifileen, joten minulla tulee vähäsen hankaluuksia seekfile-komennon kanssa.

Toivoisin esimerkkiä asiasta :oops:

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 10:26 am
by phons
Ihan äkkiseltään en saa mitään esimerkkiä, mutta sun täytyy laittaa edellinen paikaa muistiin ja hakea tarvittaessa se paikka muistista ja laittaa seekfile:llä siihen paikkaan.

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 11:02 am
by Jonhu
kysymys wrote:Kuinka saisin jatkettua tekstitiedostoon kirjoittamista samasta kohdasta, kun se sulkemisen jälkeen jäi?
Joudun kirjoittamaan writeline-komennolla tietoja tekstifileen, joten minulla tulee vähäsen hankaluuksia seekfile-komennon kanssa.

Toivoisin esimerkkiä asiasta :oops:
Tässä esimerkki, mutta en keksinyt miten saisi aloitettua uuden rivin tekstitiedostossa :?

Code: Select all

AddText "Kirjoita rivi: "

Repeat
    Repeat
        Locate 10,30
        txt$=Input(">>")
        DrawScreen
    Until KeyHit(28)
    CloseInput
    
    f=OpenToEdit("testetstes.txt")
        SeekFile f, paikka
        WriteLine f,txt$
        paikka=paikka+Len(txt$)+1
    CloseFile f
Forever

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 12:03 pm
by valscion
Jonhu wrote:
kysymys wrote:Kuinka saisin jatkettua tekstitiedostoon kirjoittamista samasta kohdasta, kun se sulkemisen jälkeen jäi?
Joudun kirjoittamaan writeline-komennolla tietoja tekstifileen, joten minulla tulee vähäsen hankaluuksia seekfile-komennon kanssa.

Toivoisin esimerkkiä asiasta :oops:
Tässä esimerkki, mutta en keksinyt miten saisi aloitettua uuden rivin tekstitiedostossa :?

Code: Select all

AddText "Kirjoita rivi: "

Repeat
    Repeat
        Locate 10,30
        txt$=Input(">>")
        DrawScreen
    Until KeyHit(28)
    CloseInput
    
    f=OpenToEdit("testetstes.txt")
        SeekFile f, paikka
        WriteLine f,txt$
        paikka=paikka+Len(txt$)+1
    CloseFile f
Forever
Uusi rivi käyttää kaksi kirjainta (ASCII 10 ja 13), joten tuossa koodissasi kun lisäät "paikka"-muuttujaan tekstin pituuden ja yhden lisää, menet metsään, kun siihen pitäisi lisätä kaksi yhden sijaan. Eli näin:

Code: Select all

AddText "Kirjoita rivi: "

Repeat
    Repeat
        Locate 10,30
        txt$=Input(">>")
        DrawScreen
    Until KeyHit(28)
    CloseInput
    
    f=OpenToEdit("testetstes.txt")
        SeekFile f, paikka
        WriteLine f,txt$
        paikka=paikka+Len(txt$)+2 // <---
    CloseFile f
Forever

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 3:19 pm
by jesperx96
Tämä on kyllä hyyyyyyyvin tyhmä kysymys, mutta miten Textillä kirjoitetun tekstin voi pyyhkiä? En löytänyt manuaalista. Voiko sitä pyyhkiä?

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 3:26 pm
by phons
Ei muuta kuin kok näytön pyyhkimisellä. Tai sitten teet näin:

Code: Select all


t=True
Repeat

If t=True Then
Text 0,0,"Moi."
EndIf

If KeyHit(cbkeyspace) And t=True Then t=False
If KeyHit(cbkeyspace) And t=False Then t=True

DrawScreen
Until EscapeKey()
Vähän purkkaisaa...
Edit: Unohdin tosiaan tuo Not-komennon. Kiitos Jonhulle siitä. :D

Re: Tyhmät kysymykset

Posted: Sun Jan 25, 2009 3:38 pm
by Jonhu
jesperx96 wrote:Tämä on kyllä hyyyyyyyvin tyhmä kysymys, mutta miten Textillä kirjoitetun tekstin voi pyyhkiä? En löytänyt manuaalista. Voiko sitä pyyhkiä?
Kun käytät text komentoa se pyyhkityy automaattisesti heti ruudun päivityksen jälkeen (poikkeuksena drawscreen OFF)

Eli text - komentoa joudut käyttämään jonkinlaisen silmukan sisällä.
Pääsilmukkaa kannattaa ajaa komennoilla repeat--> until (ehto) tai while (ehto) --> wend.

Jonkinlainen esimerkki vielä:

Code: Select all

AddText "tämä teksti pyyhkiytyy vain cleartext- komennolla" ' kirjotetaan teksitiä
AddText "paina mitätahansa nappia jatkaaksesi -->" 

DrawScreen ' piirretään näyttö

WaitKey ' odotetaan napin painoa

ClearText ' pyyhitään addtextin teksti


paalla = ON ' asetetaan paalla aluksi päälle

Repeat ' pyöritetään silmukkaa niin kauan kunnes ehto täyttyy...

    If KeyHit(28) Then paalla=Not paalla ' entteriä painettaessa paalla on eri kuin kaikaisemmin
    
    ' kirjoitetaan teksti paikkaan 10,10, vain kun paalla = 1
    If paalla = ON Then  Text 10,10, "Paina entter, niin tätä tekstiä ei piirretä" 
    
    DrawScreen ' piirretään näyttö
    
Until EscapeKey()' kunnes painetaan ESCiä
Phons ehti aikaisemmin :D

Kiitos Oonsuomelle edellisestä vastauksesta :)

Re: Tyhmät kysymykset

Posted: Mon Jan 26, 2009 3:43 pm
by Guest
Oletetaan että teen suuren mittakaavan pelin, jossa (joudun) käytän hurjan määrän muuttujia, tässä muutama kysymys niihin liittyen.
1) Onko CoolBasicissa mitään rajaa kuinka monta muuttujaa voi ohjelmassa olla käytettynä?


2) Lue tarkasti: Jos ohjelmassa on vaikka yli 1000 muuttujaa (jos edes voi olla), niin voiko niitä muuttuja jotenkin poistaa ohjelman käytöstä ja ladata myöhemmin ne muuttujat osina ohjelmaan?
Niin että ensin ohjelmassa itsessään on vaikka 1000 muuttujaa aina käytössä, mutta sitten kun mennään taistelutoimintoon ja jossa ladataan lisää muuttujia peliin (include toiminnolla, onko paras keino?), niin voiko taistelun jälkeen juuri taisteluun ladatut muuttujat jotenkin poistaa käytöstä?

Että siis aluksi on 1000 muuttujaa ohjelmassa, taisteluun mennessä lisätään esimerkiksi 50 muuttujaa include-toiminnolla ja sitten taistelun jälkeen poistetaan käytöstä ne 50 muuttujaa, mutta voiko ne taistelutoiminnon muuttujat sitten ladata taas uudelleen seuraavaa taistelu hetkeä varten? Eli voisiko tällä tavalla tehdä teoriassa loputtoman määrän muuttujia peliin?


2) Kannattaako tietoja tallentaa ylipäätään hirveää määrää muuttujiin? Jos ei niin mihin sitten?

Kiitos paljon vastauksista näin etukäteen!

Re: Tyhmät kysymykset

Posted: Mon Jan 26, 2009 3:58 pm
by esa94
Vieras wrote:Oletetaan että teen suuren mittakaavan pelin, jossa (joudun) käytän hurjan määrän muuttujia, tässä muutama kysymys niihin liittyen.
1) Onko CoolBasicissa mitään rajaa kuinka monta muuttujaa voi ohjelmassa olla käytettynä?


2) Lue tarkasti: Jos ohjelmassa on vaikka yli 1000 muuttujaa (jos edes voi olla), niin voiko niitä muuttuja jotenkin poistaa ohjelman käytöstä ja ladata myöhemmin ne muuttujat osina ohjelmaan?
Niin että ensin ohjelmassa itsessään on vaikka 1000 muuttujaa aina käytössä, mutta sitten kun mennään taistelutoimintoon ja jossa ladataan lisää muuttujia peliin (include toiminnolla, onko paras keino?), niin voiko taistelun jälkeen juuri taisteluun ladatut muuttujat jotenkin poistaa käytöstä?

Että siis aluksi on 1000 muuttujaa ohjelmassa, taisteluun mennessä lisätään esimerkiksi 50 muuttujaa include-toiminnolla ja sitten taistelun jälkeen poistetaan käytöstä ne 50 muuttujaa, mutta voiko ne taistelutoiminnon muuttujat sitten ladata taas uudelleen seuraavaa taistelu hetkeä varten? Eli voisiko tällä tavalla tehdä teoriassa loputtoman määrän muuttujia peliin?


3) Kannattaako tietoja tallentaa ylipäätään hirveää määrää muuttujiin? Jos ei niin mihin sitten?

Kiitos paljon vastauksista näin etukäteen!
1) Muistaakseni pari sataa, jonka pitäisi riittää, vaikka ryhtyisit tekemään verkkopeliä.

2) Ei voi poistaa. Includea ei kannata käyttää, sillä se vain lisää toisen filun koodiisi. Ei voi tehdä loputtomasti. Ja miksi muutenkaan sinulla olisi 1000 muuttujaa?

3)Ei. Viholliset, esineet sun muut voi toteuttaa typeillä, jotka ovat näppäriä. Funkioistakin on hyötyä, tosin niitä on rajoitettu määrä myöskin.

Re: Tyhmät kysymykset

Posted: Mon Jan 26, 2009 5:21 pm
by Pate5
Vieras wrote:Oletetaan että teen suuren mittakaavan pelin, jossa (joudun) käytän hurjan määrän muuttujia, tässä muutama kysymys niihin liittyen.
1) Onko CoolBasicissa mitään rajaa kuinka monta muuttujaa voi ohjelmassa olla käytettynä?


2) Lue tarkasti: Jos ohjelmassa on vaikka yli 1000 muuttujaa (jos edes voi olla), niin voiko niitä muuttuja jotenkin poistaa ohjelman käytöstä ja ladata myöhemmin ne muuttujat osina ohjelmaan?
Niin että ensin ohjelmassa itsessään on vaikka 1000 muuttujaa aina käytössä, mutta sitten kun mennään taistelutoimintoon ja jossa ladataan lisää muuttujia peliin (include toiminnolla, onko paras keino?), niin voiko taistelun jälkeen juuri taisteluun ladatut muuttujat jotenkin poistaa käytöstä?

Että siis aluksi on 1000 muuttujaa ohjelmassa, taisteluun mennessä lisätään esimerkiksi 50 muuttujaa include-toiminnolla ja sitten taistelun jälkeen poistetaan käytöstä ne 50 muuttujaa, mutta voiko ne taistelutoiminnon muuttujat sitten ladata taas uudelleen seuraavaa taistelu hetkeä varten? Eli voisiko tällä tavalla tehdä teoriassa loputtoman määrän muuttujia peliin?


2) Kannattaako tietoja tallentaa ylipäätään hirveää määrää muuttujiin? Jos ei niin mihin sitten?

Kiitos paljon vastauksista näin etukäteen!
Jos paljon muuttujia haluaa, niin se kannattaa toteuttaa taulukoilla.

Re: Tyhmät kysymykset

Posted: Tue Jan 27, 2009 2:37 pm
by Awaclus
Miksihän ei toimi? Luultavasti on joku ihan hassu syy, joka olisi kyllä pitänyt tajuta, eikö niin?

Code: Select all

Repeat
 Text 0,0, "Level: Ending Boss"
 Text 0,14, "Health: "+health
 Text 0, 28, "Boss Health: "+scienthealth
 Text 0, 42,  "Weapon: Laser"
 Text 0,  56,  "Music playing: Ekso - Dreamcrusher" '@ Harakka - kai tätä saa käyttää? Luin foorumeilta kun annoit jonkun toisen käyttää Ekson kappaleita ja ajattelin että itsekin saan...
 
PositionObject hiiri, MouseWX(), MouseWY()
If movement<3 Then
PointObject heebo, hiiri
EndIf
PointObject scient,heebo




heebonvauhti=3
bulletspeed=20
If movement=1 Then
If KeyDown(cbkeyw) Then TranslateObject heebo,0,heebonvauhti
If KeyDown(cbkeys) Then TranslateObject heebo,0,-heebonvauhti
If KeyDown(cbkeya) Then TranslateObject heebo,-heebonvauhti,0
If KeyDown(cbkeyd) Then TranslateObject heebo,heebonvauhti,0
EndIf
If movement=2 Then

If KeyDown(cbkeyw) Then MoveObject heebo, heebonvauhti
If KeyDown(cbkeys) Then MoveObject heebo, -heebonvauhti
If KeyDown(cbkeya) Then MoveObject heebo, 0, -heebonvauhti
If KeyDown(cbkeyd) Then MoveObject heebo, 0, heebonvauhti
EndIf
If movement=3 Then
If KeyDown(cbkeyw) Then MoveObject heebo, heebonvauhti
If KeyDown(cbkeys) Then MoveObject heebo, -heebonvauhti
If KeyDown(cbkeya) Then TurnObject heebo, -heebonvauhti
If KeyDown(cbkeyd) Then TurnObject heebo, heebonvauhti
EndIf
If ObjectX(heebo) <-320 Then PositionObject heebo, 319, ObjectY(heebo)
If ObjectX(heebo) >320 Then PositionObject heebo, -319, ObjectY(heebo)
If ObjectY(heebo) <-320 Then PositionObject heebo, ObjectX(heebo), 319
If ObjectY(heebo) >320 Then PositionObject heebo, ObjectX(heebo), -319


If MouseDown(1) And reload < 1 And gamestyle=1 Then
uusAmmus.AMMUKSET= New(AMMUKSET)
uusAmmus\obj=CloneObject(ammus2) 

CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
If Konekivaarintehot=2 Then
PlaySound lcannon, 20
Else
PlaySound mgun, 40

reload=reload+5
Bullets=Bullets-1
EndIf
EndIf 


If scientistshoot=0 Then
 newAmmus.AMMUKSET= New(AMMUKSET)
 newAmmus\obj=CloneObject(ammus2)
 
 CloneObjectPosition newAmmus\obj, scient
 CloneObjectOrientation newAmmus\obj, scient
 MoveObject newAmmus\obj, 24
 PlaySound lcannon, 20
 scientistshoot=3
EndIf


 reload=reload-3
If reload<0 Then reload=0
scientistshoot=scientistshoot-1
If scientistshoot<0 Then scientistshoot=0
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
  MoveObject iAmmus\obj,bulletspeed
   If Distance2 (iAmmus\obj, heebo) > 800 Then
    DeleteObject iAmmus\obj
    Delete iAmmus
   EndIf
   If ObjectsOverlap (iAmmus\obj, heebo) Then health=health-10
   If ObjectsOverlap (iAmmus\obj, scient) Then scienthealth=scienthealth-1
  i=i+1

Next iAmmus

If health<1 Then Goto ending
If scienthealth<1 Then Goto winning
DrawScreen
Forever

Re: Tyhmät kysymykset

Posted: Tue Jan 27, 2009 2:41 pm
by phons
En varsinaisesti tiedä ongelmaasi, mutta käytä siinä movement If-lausekkeissa ElseIf:iä. Se helpottaa hiukan... Ja olethan varmasti laittanut kaikki nuo muuttujat sinne alkuu? esim. health ja scienthealth.

Re: Tyhmät kysymykset

Posted: Tue Jan 27, 2009 3:13 pm
by Jonhu
Mikä tuossa on rikki?

Korjasin tuota nyt jotenkin, että saisin edes sen käyntiin. Koodit kannattaa antaa foorumille sellaisessa muodossa, että ne saadaan käyntiin, niin ei tarvitse puolta koodia kirjoittaa uusiksi.. Tuota eri liikutus tapoja en oikein älynnyt, joten yksinkertaistin vähäsen niitä.

Voisit myös opetella sisennyksien käytön. Ne helpottaisivat huomattavasti virheen etsimistä :|

Code: Select all

Type AMMUKSET
    Field obj
EndType

heebonvauhti=3
bulletspeed=20

heebo=LoadObject("media\soldier.bmp",72)
ammus2=LoadObject("media\bullet.bmp")
hiiri=LoadObject("media\cursor.bmp")
scient=LoadObject("media\guy.bmp",72)

'LoadSound( "Media\SK_Battle2.mp3") 

mgun=LoadSound("Media\Blaster.wav")
lcannon=LoadSound("Media\Blaster.wav")

health=10000
scienthealth=10000

ShowMouse OFF
movement=1
gamestyle=1

Repeat
    Text 0,0, "Level: Ending Boss"
    Text 0,14, "Health: "+health
    Text 0, 28, "Boss Health: "+scienthealth
    Text 0, 42,  "Weapon: Laser"
    Text 0,  56,  "Music playing: Ekso - Dreamcrusher" '@ Harakka - kai tätä saa käyttää? Luin foorumeilta kun annoit jonkun toisen käyttää Ekson kappaleita ja ajattelin että itsekin saan...

    PositionObject hiiri, MouseWX(), MouseWY()
    If movement<3 Then PointObject heebo, hiiri
    PointObject scient,heebo


    If movement=1 
        If KeyDown(cbkeyw) Then MoveObject heebo,heebonvauhti
        If KeyDown(cbkeys) Then MoveObject heebo,-heebonvauhti

     //  objecti osoittaa hiireen, jolloin sivuttaisuunnan liikkeestä ei ole hyötyä
      '  If KeyDown(cbkeya) Then TurnObject heebo,-heebonvauhti
      '  If KeyDown(cbkeyd) Then TurnObject heebo,heebonvauhti
    EndIf
    
    If ObjectX(heebo) <-320 Then PositionObject heebo, 319, ObjectY(heebo)
    If ObjectX(heebo) >320 Then PositionObject heebo, -319, ObjectY(heebo)
    If ObjectY(heebo) <-320 Then PositionObject heebo, ObjectX(heebo), 319
    If ObjectY(heebo) >320 Then PositionObject heebo, ObjectX(heebo), -319


    If MouseDown(1) And reload < 1 And gamestyle=1 Then
        uusAmmus.AMMUKSET= New(AMMUKSET)
        uusAmmus\obj=CloneObject(ammus2)

        CloneObjectPosition uusAmmus\obj, heebo
        CloneObjectOrientation uusAmmus\obj, heebo
        MoveObject uusAmmus\obj, 24
        
        If Konekivaarintehot=2 Then
            PlaySound lcannon, 20
        Else
            PlaySound mgun, 40
            reload=reload+20
            Bullets=Bullets-1
        EndIf
        
    EndIf


    If scientistshoot=0 And reload2 < 1  Then
        newAmmus.AMMUKSET= New(AMMUKSET)
        newAmmus\obj=CloneObject(ammus2)

        CloneObjectPosition newAmmus\obj, scient
        CloneObjectOrientation newAmmus\obj, scient
        MoveObject newAmmus\obj, 24
        PlaySound lcannon, 20
        scientistshoot=3
        reload2+50
    EndIf

    If reload2>0 Then reload2=reload2-3 // Toinenkin ukko tarvitsee reloadin mieluiten tekisit typeillä
    If reload2<0 Then reload2=0
    
    If reload>0 Then reload=reload-3 // vähennetään vain kun on reloadia..
    If reload<0 Then reload=0
    
    scientistshoot=scientistshoot-1
    If scientistshoot<0 Then scientistshoot=0
    
    'Update bullwts
    For iAmmus.AMMUKSET= Each AMMUKSET
        MoveObject iAmmus\obj,bulletspeed
        
        If Distance2 (iAmmus\obj, heebo) > 800 Then delet=ON
       
        If ObjectsOverlap (iAmmus\obj, heebo) Then health=health-10 Then delet=ON
        If ObjectsOverlap (iAmmus\obj, scient) Then scienthealth=scienthealth-1 Then delet=ON
        
        //POISTETAAN KAIKKISTA SYISTÄ KERRALLA OBJEKTIT
        If delet=ON
            DeleteObject iAmmus\obj
            Delete iAmmus
            delet=OFF
        EndIf
        
        i=i+1
    Next iAmmus

    If health<1 Then Goto ending
    If scienthealth<1 Then Goto winning
    
    DrawScreen
    
Forever

ending:
winning:

Re: Tyhmät kysymykset

Posted: Wed Jan 28, 2009 5:26 pm
by Character
Miten saan tehtyä kaksi tekstiä joista toinen on ruutukordinaateissa ja toinen
maailmakordinaateissa pelissä yhtäaikaa.. :? Yritin funktioilla muttei onnistunut.
EDIT:

Ei mitään sain ratkaistua itse.