Tyhmät kysymykset (I/2009)

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

Re: Tyhmät kysymykset

Post by btw » Sat Apr 12, 2008 1:47 pm

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

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina » Sat Apr 12, 2008 2:59 pm

Näyttäis siltä, että ohjelma yrittää mennä C:\:n yläkansioon. Muuta vikaa en löydä.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

btw

Re: Tyhmät kysymykset

Post by btw » Sat Apr 12, 2008 3:23 pm

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 » Sat Apr 12, 2008 4:12 pm

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 » Sun Apr 13, 2008 5:43 pm

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.

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina » Sun Apr 13, 2008 5:57 pm

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.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
Wolfman
Newcomer
Posts: 37
Joined: Sat Apr 12, 2008 9:43 pm

Re: Tyhmät kysymykset

Post by Wolfman » Mon Apr 14, 2008 10:05 pm

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

User avatar
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka » Mon Apr 14, 2008 10:27 pm

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)

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Tyhmät kysymykset

Post by nevssons » Tue Apr 15, 2008 7:47 am

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 » Tue Apr 15, 2008 9:39 am

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

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Tyhmät kysymykset

Post by nevssons » Tue Apr 15, 2008 2:02 pm

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 » Wed Apr 16, 2008 6:31 pm

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 :(

User avatar
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: Tyhmät kysymykset

Post by Dande » Wed Apr 16, 2008 6:42 pm

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

User avatar
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja » Wed Apr 16, 2008 7:04 pm

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 » Thu Apr 17, 2008 8:06 am

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 

User avatar
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tyhmät kysymykset

Post by Pate5 » Thu Apr 17, 2008 8:14 am

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 » Thu Apr 17, 2008 8:19 am

vika ei ole siinäkään. objecti ei vieläkään käänny hiiriobjectiin päin. :(

User avatar
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tyhmät kysymykset

Post by Pate5 » Thu Apr 17, 2008 9:19 am

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

User avatar
mokkeri
Member
Posts: 84
Joined: Sat Apr 05, 2008 9:22 pm

Re: Tyhmät kysymykset

Post by mokkeri » Fri Apr 18, 2008 4:57 pm

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

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina » Fri Apr 18, 2008 5:11 pm

Code: Select all

    ShowMouse OFF
    cursor = LoadObject("media/cursor.bmp")
    While True
        ScreenPositionObject cursor,MouseX(),MouseY()
        DrawScreen 
    Wend 
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

Locked