Tyhmät kysymykset (I/2009)

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

Re: Tyhmät kysymykset

Post 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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Näyttäis siltä, että ohjelma yrittää mennä C:\:n yläkansioon. Muuta vikaa en löydä.
btw

Re: Tyhmät kysymykset

Post 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 :/
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post 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
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
remav

Re: Tyhmät kysymykset

Post 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.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post 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.
Wolfman
Newcomer
Posts: 37
Joined: Sat Apr 12, 2008 9:43 pm

Re: Tyhmät kysymykset

Post 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.
Image
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post 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
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Tyhmät kysymykset

Post 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
Koodarina kohtalainen, henkilönä vittumainen
Image
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post 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
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Tyhmät kysymykset

Post 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

Koodarina kohtalainen, henkilönä vittumainen
Image
dasdasda

Re: Tyhmät kysymykset

Post 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 :(
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: Tyhmät kysymykset

Post 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
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post 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
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions
guest

Re: Tyhmät kysymykset

Post 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 
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tyhmät kysymykset

Post 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.
CoolBasic henkilökuntaa
Graafikko
guest

Re: Tyhmät kysymykset

Post by guest »

vika ei ole siinäkään. objecti ei vieläkään käänny hiiriobjectiin päin. :(
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tyhmät kysymykset

Post 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)
CoolBasic henkilökuntaa
Graafikko
mokkeri
Member
Posts: 84
Joined: Sat Apr 05, 2008 9:22 pm

Re: Tyhmät kysymykset

Post 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. :)
asd
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Code: Select all

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