Page 41 of 154

Re: Tyhmät kysymykset

Posted: Sat Apr 12, 2008 1:47 pm
by btw
Mikäs tässä on vikana?

Tarkoitus olisi huvikseen loopata koko C:\ levyn tiedostot mutta iskee FindFile failed :/

Code: Select all

ChDir "C:\"

StartSearch


    Repeat
    
        file$=FindFile()
        
        If file$="" Then ChDir ".." 'no more files
        
        Print file$
        
        onkokansio = IsDirectory(file$)
        
        If onkokansio = 1 Then ChDir ""+file$+""
        
                   
    Forever
EndSearch
=/

Käytähän ensi kerralla niitä code-tageja. ;)
t: Dibalo

Re: Tyhmät kysymykset

Posted: Sat Apr 12, 2008 2:59 pm
by Koodiapina
Näyttäis siltä, että ohjelma yrittää mennä C:\:n yläkansioon. Muuta vikaa en löydä.

Re: Tyhmät kysymykset

Posted: Sat Apr 12, 2008 3:23 pm
by btw
Yritin kyllä purkalla tehdä version joka ei mene enää yläkansioon jos C:\ ssä ollaan mutta ei sekään toimi. FindFile failedia ilmoittaa :/

Ja muutenkin tuossa on monta kansiota joihin ohjelma menisi hakemaan lisää tiedostoja mutta ei mene.

Tulostaa kaikki C:\n juuressa olevat kansiot ja tiedostot, jonka jälkeen heittää errorin FindFile failed.

Tein sen niinkin että jos tiedostot loppuvat kesken, se lopettaa ohjelman, mutta ei, se siltikin pistää errorin :/

Re: Tyhmät kysymykset

Posted: Sat Apr 12, 2008 4:12 pm
by Jonez
Aika hankala, mutta sain ratkaistua. Taitaa olla niin, että vaikka vaihdat kansiota, niin ohjelma jatkaa silti vanhan kansion skannaamista. Sen lisäksi vaikka vaihtaisit kansiota ja menisit heti ensimmäiseen löydettyyn kansioon, niin siellä uudessa kansiossa mentäisiin sellaiseen kansioon kuin "..", joka on sama kuin "edellinen kansio".

Ton sun koodin perusteella kaiken lisäks mennään edelliseen kansioon jos ei löydetä enää kansioita. Sehän johtaa loogisesti siihen että lopulta päästään ihan kansioiden juureen. Tiedostojen etsimistä kuitenkin jatketaan tämänkin jälkeen, joka johtaa FindFile() failediin, koska lista loppuu kesken.

Näin siis itse käsitin. Tässä on kuitenkin koodi jonka pitäisi toimia:

Code: Select all

ChDir "C:\"
StartSearch
    Repeat
    
        f$ = FindFile()
        Print CurrentDir() + f$
        WaitKey
        
        If f$ = "" Then Exit

        If IsDirectory( f$ ) And f$ <> ".." And f$ <> "." Then
            EndSearch
            ChDir( f$ )
            StartSearch
        EndIf
        
    Forever
EndSearch

Re: Tyhmät kysymykset

Posted: Sun Apr 13, 2008 5:43 pm
by remav
En saa millään päähäni miten tavalliselta tilekartan tileltä saisi tunnistettua mistä suunnasta siihen törmättiin? Eli Joidenkin tilejen läpi ei pääse mistään suunnasta kun taas toisten pääsee alhaalta, vasemmalta ja oikealta mutta ylhäältä ei.

Re: Tyhmät kysymykset

Posted: Sun Apr 13, 2008 5:57 pm
by Koodiapina
remav wrote:En saa millään päähäni miten tavalliselta tilekartan tileltä saisi tunnistettua mistä suunnasta siihen törmättiin? Eli Joidenkin tilejen läpi ei pääse mistään suunnasta kun taas toisten pääsee alhaalta, vasemmalta ja oikealta mutta ylhäältä ei.
Coolbasicin Learning Centerin esimerkki 19, rivit 88 ja 93. EDIT: Ja tuohon tarvitsee muutakin, kannattaa katsoa koko esimerkki läpi.

Re: Tyhmät kysymykset

Posted: Mon Apr 14, 2008 10:05 pm
by Wolfman
Hi.
Olen tekemässä scroll up-räiskintää, ja miettisin miten tekisin laser-aseen, joka on päällä vain kun x-näppäin on pohjassa. Itse yritin, mutta ne kaikki epäonnistuivat.
Itse käytä animoitua objektia laserina. Ja laser koostuu vain yhdestä osasta, ja tulee sojoittamaan aluksen nokasta kuin keppi.

Re: Tyhmät kysymykset

Posted: Mon Apr 14, 2008 10:27 pm
by Harakka
Jos laseri on objekti, esim. näin:

Code: Select all

If KeyDown(cbkeyx) then 'jos ammutaan
  ShowObject laser,1
  PositionObject laser,ObjectX(alus),objecty(alus) + ObjectSizeY(laser)/2
  'laserin törmäystarkastukset ym
Else
  ShowObject laser,0
Endif

Re: Tyhmät kysymykset

Posted: Tue Apr 15, 2008 7:47 am
by nevssons
Olen tämmösen ongelman kanssa paininu vähän aikaa ja päätin kysyä täältä:

Tän pitäis kirjottaa uus käyttäjä listaan ja lisätä käyttäjien lukua yhdellä

Code: Select all

ID=OpenToRead ("ID/Users.txt")
num$=ReadLine(ID)

If Not num$="0" Then

Dim KÄ(Int(num$))
For dsm=1 To Int(num$)
KÄ(dsm)=ReadLine(ID)
Next dsm
CloseFile ID
ID=OpenToWrite("ID/Users.txt")
WriteLine ID,Str(Int(num$)+1)
For fum=1 To Int(num$)
WriteLine ID,KÄ(dsm)
Next fum
WriteLine ID,Gettext(Ip1$)

Else
CloseFile ID
ID=OpenToWrite("ID/Users.txt")
WriteLine ID,"1"
WriteLine ID,Gettext(Ip1$)
CloseFile ID
EndIf 
Mutta toi kirjottaa entisten käyttäjien tilalle nollan
Apua?

Niin ja Users.txt on tällänen:

Code: Select all

3
Erkki
Eemeli
Jukka

Re: Tyhmät kysymykset

Posted: Tue Apr 15, 2008 9:39 am
by Jonez
Pikaisella silmäyksellä taulukko KÄ näyttäisi olevan kokonaisluku-taulukko. Se ei voi säilöä merkkijonoja. Muuta se vaikka tällaiseksi:

Code: Select all

Dim KÄ( Int( num$ ) ) As String

Re: Tyhmät kysymykset

Posted: Tue Apr 15, 2008 2:02 pm
by nevssons
Jonez wrote:Pikaisella silmäyksellä taulukko KÄ näyttäisi olevan kokonaisluku-taulukko. Se ei voi säilöä merkkijonoja. Muuta se vaikka tällaiseksi:

Code: Select all

Dim KÄ( Int( num$ ) ) As String
se puuttui mutta nytten vanhojennimien tilalle ei tyle mitään!

Koodi on siis:

Code: Select all

ID=OpenToRead ("ID/Users.txt")
num$=ReadLine(ID)

If Not num$="0" Then

Dim KÄ(Int(num$)) As String
For dsm=1 To Int(num$)
KÄ(dsm)=ReadLine(ID)
Next dsm

[Edit]Löysin vian :D [/Edit]
CloseFile ID
ID=OpenToWrite("ID/Users.txt")
WriteLine ID,Str(Int(num$)+1)
For fum=1 To Int(num$)
WriteLine ID,KÄ(dsm)
Next fum
WriteLine ID,Gettext(Ip1$)

Else
CloseFile ID
ID=OpenToWrite("ID/Users.txt")
WriteLine ID,"1"
WriteLine ID,Gettext(Ip1$)
CloseFile ID
EndIf 
EDIT:

Löysin vian!
For fum=1 To Int(num$)
WriteLine ID,KÄ(dsm)
Next fum


Re: Tyhmät kysymykset

Posted: Wed Apr 16, 2008 6:31 pm
by dasdasda

Code: Select all

Repeat
luku = Input("Syötä luku: ")
DrawScreen
Until KeyHit(cbKeyReturn)

luku = toinenluku

Repeat
potenssi = Input("Syötä laskettava potenssi: ")
DrawScreen
Until KeyHit(cbKeyReturn)

Repeat
luku = luku * toinenluku
tarvittavapotenssi = tarvittavapotenssi + 1
Until tarvittavapotenssi = potenssi

Print "Vastaus on:  "+luku

WaitKey
Miksei tää "potenssilaskin" toimi, näyttää vain nollaa? Paska ohjelmointikieli :(

Re: Tyhmät kysymykset

Posted: Wed Apr 16, 2008 6:42 pm
by Dande
dasdasda wrote:

Code: Select all

Repeat
luku = Input("Syötä luku: ")
DrawScreen
Until KeyHit(cbKeyReturn)

luku = toinenluku

Repeat
potenssi = Input("Syötä laskettava potenssi: ")
DrawScreen
Until KeyHit(cbKeyReturn)

Repeat
luku = luku * toinenluku
tarvittavapotenssi = tarvittavapotenssi + 1
Until tarvittavapotenssi = potenssi

Print "Vastaus on:  "+luku

WaitKey
Miksei tää "potenssilaskin" toimi, näyttää vain nollaa? Paska ohjelmointikieli :(
Rivillä kuusi komennat: "luku = toinenluku"
eli sijoitat muuttujan toinenluku arvon muuttujaan luku. Koska toinenluku-muuttujaa ei ole käytetty aiemmin, CoolBasic alustaa sen oletuksena nollaan. Tuon rivin jälkeen muuttujan luku arvo on 0. Tästä tietenkin seuraa että luupissa asetan n kertaa luku-muuttujan arvoksi 0*0 mikä on tietenkin 0. Jos taas vaihdat rivin kuusi muotoon "toinenluku = luku", niin se toimii.

Ne ohjeet voisi lukea. CoolBasicissä on loistava manuaali

Re: Tyhmät kysymykset

Posted: Wed Apr 16, 2008 7:04 pm
by Murskaaja
Potenssille on muuten kyllä ihan oma merkkinsä. Ei tarvitse mitään kummallisuuksia alkaa säätämään. Jos tosiaan sitä manuskaa viitsisit vähän lukea. Kun on alkeet hanskassa säästyy aikaa ja vaivaa sitten jatkossa. :)

Code: Select all

    Repeat
        luku = Input("Syötä luku: ")
        DrawScreen
    Until KeyHit(cbKeyReturn)
    CloseInput
    
    Repeat
        potenssi = Input("Syötä laskettava potenssi: ")
        DrawScreen
    Until KeyHit(cbKeyReturn)
    CloseInput
    vastaus = luku^potenssi
    Print "Vastaus on:  "+vastaus
    WaitKey

Re: Tyhmät kysymykset

Posted: Thu Apr 17, 2008 8:06 am
by guest
mikä täs koodis on vikana? pitäs saada se ukko osottamaan toista objectia mut se ei toimi.

Code: Select all

SCREEN 256,256

FrameLimit 60

kartta=LoadMap("kartta.til","tileset.bmp")

auto=LoadObject("auto.bmp")
MaskObject alus,cbmagenta

hiiri=LoadObject("tähtäin.bmp")
ShowMouse OFF 

Repeat 
    
    PositionObject hiiri,MouseWX(),MouseWY()
    
    PointObject auto,hiiri

    
DrawScreen 
Forever 

Re: Tyhmät kysymykset

Posted: Thu Apr 17, 2008 8:14 am
by Pate5
guest wrote:mikä täs koodis on vikana? pitäs saada se ukko osottamaan toista objectia mut se ei toimi.
Koodissa ladataan aluksi auto -niminen objekti, ja sen jälkeen yritetään maskata "alus"-objekti jota ei ole ladattu. Muuta tuo maskaaminen niin, että se maskaa auto-objektin, eikä alusta, jota ei ole.

Re: Tyhmät kysymykset

Posted: Thu Apr 17, 2008 8:19 am
by guest
vika ei ole siinäkään. objecti ei vieläkään käänny hiiriobjectiin päin. :(

Re: Tyhmät kysymykset

Posted: Thu Apr 17, 2008 9:19 am
by Pate5
guest wrote:vika ei ole siinäkään. objecti ei vieläkään käänny hiiriobjectiin päin. :(
Johtuu myös siitä, että auto-objekti on ladattu vain yhdessä asennossa.

Laita näin, niin toimii:

Code: Select all

auto=LoadObject("auto.bmp",72)

Re: Tyhmät kysymykset

Posted: Fri Apr 18, 2008 4:57 pm
by mokkeri
Elikkäs, miten saan hiiren kuvan vaihdettua objektilla??
Joskus sen olen täältä löytänyt mutta eipä löydy enää.

Voiskos joku kertoa. :)

Re: Tyhmät kysymykset

Posted: Fri Apr 18, 2008 5:11 pm
by Koodiapina

Code: Select all

    ShowMouse OFF
    cursor = LoadObject("media/cursor.bmp")
    While True
        ScreenPositionObject cursor,MouseX(),MouseY()
        DrawScreen 
    Wend