Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset (II/2009)

Post by Ruuttu »

Minun pitäisi käydä läpi koko tietokoneen joka ikinen tiedosto. Olen kokeillut tällaista lähestymistapaa ja todennut sen huonoksi:

Code: Select all

        Type FOLDER
            Field Path As String
        EndType
        
        NewFolder.FOLDER = New(FOLDER)
        NewFolder\Path = "C:\"

        For iFolder.FOLDER = Each FOLDER
            ChDir iFolder\Path
            StartSearch
            Repeat
                File$ = FindFile()
                
                Print CurrentDir()+File$
                
                If File$ = "" Then Exit

                If IsDirectory(File$) Then
                    NewFolder.FOLDER = New(FOLDER)
                    NewFolder\Path = CurrentDir() + File$
                EndIf
            Forever
            EndSearch
            Delete iFolder
        Next iFolder
Ohjelma tuntuu jatkavan suoritustaan ikuisesti, käyden läpi samoja kansioita uudelleen ja uudelleen. Jokin todella älytön ajatusvirhe on päässyt jonnekin lipsahtamaan, jostain puuttuu olennainen pätkä joka lopettaa silmukan oleelliseen kohtaan. Tai kenties koko systeemi pitäisi uusia.
EDIT:

KIITOS ja kumarrus ja munkkipossu.

Last edited by Ruuttu on Sat Jul 25, 2009 1:22 pm, edited 1 time in total.
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

mikä itseäni pistää silmään on, että lopetat repeatin komennolla Forever eli ikuisesti. :)
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (II/2009)

Post by TheFish »

Ruuttu wrote:Minun pitäisi käydä läpi koko tietokoneen joka ikinen tiedosto. Olen kokeillut tällaista lähestymistapaa ja todennut sen huonoksi:

Code: Select all

koodia
Ohjelma tuntuu jatkavan suoritustaan ikuisesti, käyden läpi samoja kansioita uudelleen ja uudelleen. Jokin todella älytön ajatusvirhe on päässyt jonnekin lipsahtamaan, jostain puuttuu olennainen pätkä joka lopettaa silmukan oleelliseen kohtaan. Tai kenties koko systeemi pitäisi uusia.
Tarkasta ettei kansion nimi ole ".." tai "." ennen kuin lisäät sen typeen. ".." viittaa kansion yläkansioon, ja "." viittaa kansioon itseensä, joten se kiertää samoja kansioita niiden takia.

Code: Select all

If Not file$ = ".." or file$ = "." Then 
    NewFolder.FOLDER = New(FOLDER)
    NewFolder\Path = CurrentDir() + File$
EndIf
CoolBasic henkilökuntaa
Kehittäjä
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Saisinko tehtyä jotenkin pisteitä mitä tekoäly seuraisi? Nimittäin tällä hetkellä tälläinen:

Code: Select all

If ObjectX(auto_1) > 87 And ObjectX(auto_1) < 257 And ObjectY(auto_1) > 132 And ObjectY(auto_1) < 301 Then TurnObject auto_1, 4

If ObjectX(auto_1) > -230 And ObjectX(auto_1) < 345 And ObjectY(auto_1) > 818 And ObjectY(auto_1) < 1030 Then TurnObject auto_1, 3.5

If ObjectX(auto_1) > -506 And ObjectX(auto_1) < 70 And ObjectY(auto_1) > 480 And ObjectY(auto_1) < 611 Then TurnObject auto_1, -4

If ObjectX(auto_1) > -531 And ObjectX(auto_1) < -295 And ObjectY(auto_1) > 680 And ObjectY(auto_1) < 840 Then TurnObject auto_1, 3

If ObjectX(auto_1) > -1000 And ObjectX(auto_1) < -831 And ObjectY(auto_1) > 466 And ObjectY(auto_1) < 836 Then TurnObject auto_1, 4

If ObjectX(auto_1) > -540 And ObjectX(auto_1) < -220 And ObjectY(auto_1) > 190 And ObjectY(auto_1) < 289 Then TurnObject auto_1, 1.5

Ja ei ole kovin hyvä valinta, koska on vaikea suhteuttaa ulosajot sekä muut tuohon onnistuneesti, koska jos sinne tulee ulos ajo auto ajelee minne haluaa hetken ja sitten ajaa ulos. Taas normaalisti se ajaa tuota rataa kierroksen ympäri, mutta toisella kierroksella alkaa tulemaan ongelmia, nimittäin se ei aja radalla oikealla tavalla, koska tuo on huono systeemi. Eli saisiko jotain pisteitä tehtyä mitä auto seuraisi jos saa miten? :)
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset (II/2009)

Post by KillBurn »

@Matti3.

Code: Select all

FrameLimit 40 
SCREEN 800,600
map=LoadMap("media\map1.til","media\tileset.bmp")
ukko=LoadObject("media\guy.bmp",32)
target=MakeObject()

'Scannataan montako eri data numeroa on
maxdata=19
way=19
i=0
For y=1 To MapWidth()
For x=1 To MapWidth()
    If GetMap2(3,x,y)>19 Then maxdata+1
    'way=maxdata
Next x
Next y
'päälooppi
Repeat
'Käännenään ukko katsomaan kohdetta ja liikutetaan se sinne

CurvePointObject(ukko, target,5)
MoveObject ukko,3

CloneCameraPosition ukko

If ObjectsOverlap(ukko,target) Then way+1 Then aa+1'jos ukko ja kohde törmää niin kohde vaihtaa paikkaa
'Katsotaan mihin kohtiin kohde voi asettua
For x=1 To MapWidth()
For y=1 To MapWidth()
If GetMap2(3,x,y)=way Then PositionObject target,x*32-(ObjectSizeX(map)/2),-y*32+(ObjectSizeY(map)/2)
Next y
Next x

'Jos Astutaan viimeiseen data kerrokseen niin aloitetaan lenkki alusta
If way>maxdata Then way=20

Text 10,10,"way "+way
Text 10,20,"max "+maxdata
DrawScreen
Forever 

Function CurvePointObject(_obj1, _obj2, _smoothness = 10)
    angle#      = ObjectAngle(_obj1)
    newangle#   = GetAngle2(_obj1, _obj2)
    angle#      = CurveAngle(newangle, angle, _smoothness)
    RotateObject _obj1, angle
EndFunction 
Siinä olisi aikaa sitten tekemäni waypointhomma. Lisäsin siihen curvepoinobject funktion hienontamaan.
Tarvitset tilekartan ja datakerroksiin merkitset waypointit 20 alkaen.
Susittelen kuitenkin kehittelemään tekoälyä pidemmälle, tuommoisena voi käydä tylsäksi.
Oma autopeli kehitteillä, jos valmistuu saat kovan kilpailijan :)
EDIT:

Siis eka data onkin 20, mutta sitähän voi vaihtaa. No datakerrokset ovat tilekartan kerroksia, joihin voidaan asettaa jotain numeroita/dataa, ja ainakun objekti koskee tiettyä datanumero kerrosta tehdään jotain. Tässä tapaukessa otetaan uusi suunta. Suosittelen selaamaan manualin kohtia tilekartoista. Autopeli on aika hankala tehdä, mutta onnea yritykseen.

Last edited by KillBurn on Sat Jul 25, 2009 2:48 pm, edited 4 times in total.
Sumu Games: Sam, Ur eye!
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Odotas. Nämä datakerrokset ovat hieman outo käsite eli selitätkö hieman mitä ajat takaa? :)
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
Jammer
Newcomer
Posts: 1
Joined: Sat Jul 25, 2009 9:25 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jammer »

mulla olis semmonen kysymys, että kun yritän suorittaa ohjelmaa niin tulee joku ihme virheraportti
se on tällänen:The program could not be run because the previous run is still active.
Please close the previous program and try again. miten mä saisin ton pois, että pystyisin suorittaa ohjelmia?? :idea: :idea:
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez »

Onko käytössä Vista? Avaa editori järjestelmänvalvojana.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (II/2009)

Post by MaGetzUb »

matti3 wrote:Odotas. Nämä datakerrokset ovat hieman outo käsite eli selitätkö hieman mitä ajat takaa? :)
Data kerros on kerros, jota ei piirretä karttaa piirtäessä. Datakerros säilöö numeroita, joita voidaan sitten pelissä käyttää hyväksi.
Kun haluat tarkistaa, mitä koordinaattien alla on niin käytät GetMap komentoa. Esim:

Code: Select all

If GetMap(3,Objectx(ukko),Objecty(ukko)) = 9 Then Goto MISSION_COMPLETED
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Laitoin data kerrokseen tilesetterissä 13 kohtaa ja testasin peliä Tuo automenee heti pois radalta ja jää pyörimään ympyrää mitäs hiivattia? :O
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

WTF!? tuosta nyt ei saa mitään irti... Siis mitä oikein yrität!? Jos et ymmärrä miten tilemapin data kerros toimii, niin:

DATA-kerros on täysin samanlainen kuin kaikki muutkin... Se ei vain tarvitse mitään piirrettävää. Sille vain annetaan arvo. DATA-kerros on periaatteessa täysin turha, mutta toisaalta se on kyllä hyödyllinen. Jos laitat tileen datan 2 niin sen voi tehdä myös laittamalla BACK-kerrokseen tile 2 ja tarkistamalla sitten BACK kerroksen. Ei mitään eroa siis, jos piirtoa ei lasketa. Kai ymmärrät kokonaan miten tilemapit toimivat, ja joskus on suositeltavaa ettet käytä liika DATA-kerrosta, koska minulla tuli joku bugi kartta editorini kanssa, dataa oli aikas paljon ja se vähän tökki sitten kun tein virheen enkä muistanut tallentaa mappia, alko ketuttamaan aikas paljon, eli siis jos vaikka tett jonkun systeemin misä jokainen data tekee oman juttunsa, voi mappien teko olla työlästä. Minulla käy usein näin ja siksi kahden projektin koodaaminen on jäädytetty. Ja jos vaikka haluat auton pysähtyvän data kerroksessa niin vaihda jokin muutuuja Falseksi kun löydetään data, objectin koordinaateista.
Image
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Code: Select all

tiedot = LoadMP3Info(biisi)

PlaySound biisi
ajoitusnyt=Timer()

Print "PlaySound succesed"

Repeat

biisinmitta=GetMP3Length(biisi)

If Timer()-ajoitusnyt=biisinmitta Then Exit

Text 10,10,Timer()-ajoitusnyt+"/"+biisinmitta
Text 10,30,tiedosto
Text 10,50,"Biisinmitta: " +GetMP3Info(tiedot,_LENGTHINSEC)

DrawScreen

Forever
Lopputuloksena näyttää seuraavat tekstirivit:
nousevalukusarja$/0
soitettavanbiisinnimi$
Biisinmitta: 0
nuo kaksi nollaa ovat samoja arvoltaan, puolet tarkoituksesta täyttyy. Muttakun arvon pitäisi olla 1:17 - mittaisen mp3:n pituus sekuntteina. Ja nuo molemmat ämpeekolmenpituudenpalautusfunktiot ovat copypastetettu cbkk:sta. Apua?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Viltzu »

Feuer wrote:

Code: Select all

Text 10,50,"Biisinmitta: " +GetMP3Info(tiedot,_LENGTHINSEC)
Pieni veikkaus että tuossa ei kuulu olla _LENGTHINSEC vaan varmaan 1.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Tuo vakio määritellään koodin alussa... Mutta nyt havaitsin jotain erittäin mielenkiintoista. Kuva kertoo kuin 1000 sanaa.

E: Mahtavaa... Softabugeja siis. Poistan tuon skriinin hidastamasta latausta ihmisiltä.
Last edited by Feuer on Mon Jul 27, 2009 8:09 pm, edited 1 time in total.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Astigma »

Feuer wrote:Tuo vakio määritellään koodin alussa... Mutta nyt havaitsin jotain erittäin mielenkiintoista. Kuva kertoo kuin 1000 sanaa.
Tuo on pienin luku, joka voidaan esittää 4 tavun kokoisella kokonaislukumuuttujalla, tutummin tunnettu integerinä. Bitteinä kyseinen luku lienee 10000000 00000000 00000000 00000000.
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset (II/2009)

Post by skorpioni-cb »

Minä tiedän miten voidaan näyttää ohjelmalle hiiren rullan pyörityksen, mutta aseenvaihto ei toimi.

p.s Minä tiedän vain asiaan liittyvät funktiot, mutta en osaa käytäntöä :cry:
EDIT:

Höh.

Last edited by skorpioni-cb on Tue Jul 28, 2009 9:36 pm, edited 1 time in total.
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Pystyykö nykyisellä CB:llä koodaamaan minkäänlaisia simppelejä algoritmeja (Funktiot nyt tulevat ensimmäisenä mieleen hyödyllisistä komennoista)? Olen väsäämässä käsin yhtä tuollaista ja jos CB voisi auttaa, niin kiva : )
"Baby," I said. "I'm a genius but nobody knows it but me."
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset (II/2009)

Post by Koodiapina »

Pystyy, mutta nopeutta vaativissa algoritmeissä ei välttämättä ole kaikkein paras ratkaisu.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Grandi wrote:Pystyy, mutta nopeutta vaativissa algoritmeissä ei välttämättä ole kaikkein paras ratkaisu.
Jos jotain saan aikaan CB:llä, niin hyvä.
"Baby," I said. "I'm a genius but nobody knows it but me."
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Muistaakseni jossain oli esimerkkikoodi tästä, mutten tähän hätään muista missä.

Miten saan siis niin, että ohjelma tarjoaa ensin näyttöä A ja jos pelaajan kone ei tue tuota, niin näyttöä B ja jos sekään ei toimi, niin näyttöä C?
EDIT:

Siis tietenkin näytönkokoa haen

"Baby," I said. "I'm a genius but nobody knows it but me."
Locked