Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
Zero
Lead Developer
Lead Developer
Posts: 725
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Tyhmät kysymykset (II/2009)

Post by Zero » Sat Jun 06, 2009 12:44 pm

EDIT:

Uusi ketju aloitettu: Tyhmät kysymykset (I/2010). Keskustelu jatkuu siellä.

Edellinen topic Tyhmät kysymykset (I/2009) kasvoi niin suureksi, että aihetta on parempi jatkaa omassa ketjussaan.

Ylläpito pilkkoo kaikki yli 100-sivuiset aiheet jatkoketjuiksi.

Tyhmät kysymykset - tarkoitus

Törmäsitkö ongelmaan, jonka tiedät olevan oikeasti ihan helppo, mutta ratkaisu ei vain osu silmään? Onko ongelmasi niin vähäpätöinen, ettei sitä varten kannata tehdä uutta ketjua?

Alkuperäisen ketjun johdanto meni näin:
iTKEVAnAKKI wrote:Eli tänne kaikki yksinkertaiset kysymykset johin et ole keksinyt ratkaisua. Mutta muistakaa, että käytätte ensin hakua!
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by SPuntte » Sat Jun 06, 2009 12:53 pm

Tämä kuuluisi vanhaan ketjuun, mutta Zerppa onnistui lukottamaan sen juuri nenäni edestä :[

Jossain on nyt jotain pielessä:
Jonez wrote:--Muistipaloja (tapa 4) eivät aloittelijat tarvitse. Niiden väärinkäyttö saattaa tehdä hallaa koneellesi.

Code: Select all

--
//luodaan 12 tavun muistipala (jokainen kuva vie 4 tavua, tavut 0-3, 4-7, 8-11)
memKuvat = MakeMEMBlock( 11 )
--
CoolBasic - ohjekirja wrote: CoolBasicin avulla varattuun muistiin voidaan kirjoittaa tavuja, kahdenlaisia kokonaislukuja sekä desimaalilukuja. Huomaa, että kun kirjoitat/luet tietoa, ensimmäinen paikka on nolla ja viimeinen KOKO-1.

On myös tärkeää pitää huoli siitä, että et kirjoita varatun muistialueen ulkopuolelle. Se saattaa kaataa ohjelman tai jopa koko järjestelmän.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez » Sat Jun 06, 2009 1:45 pm

Totta. Tuossa tapahtui pieni moka. :)
Sekoitin tuon muistinvarauksen taulukoiden tyyliin. Se kuuluisi olla:

Code: Select all

memKuvat = MakeMEMBlock( 12 )
Tämä tarkottaisi tavuja 0-11.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by Latexi95 » Sat Jun 06, 2009 10:31 pm

Tuhoaako CoolBasic muistipalat automaattisesti, kun ohjelma sammutetaan?

Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Sat Jun 06, 2009 10:34 pm

Anteeksi että vaivaan vielä teitä tämän saman ongelman kanssa, mutta olen jo monta päivää miettinyt eri ratkaisutapoja piirtojärjestyksen korjaamiseen, mutta ei, ei siitä tule mitään. Kysyin täältäkin apua jo aikasemmassa aiheessa ja vaikuttaa siltä ettei edes kukaan täällä CoolBasicin foorumillakaan osaa tehdä haluamaani piirtojärjestystä. Projektini alkaa kaatua tähän ongelmaan ja se harmittaa kun sitä on tullut tehtyä jo päälle vuoden verran. Aloin vasta vähän aikaa sitten ruveta toteuttamaan parempaa graafista käyttöliittymää jolloin törmäsin tähän ongelmaan.

Haluaisin saada edes jonkinlaisen vastauksen tähän ongelmaani kokeneemmalta.

Eli onko tälläistä haluamaani piirtojärjestystä edes mahdollista CB:llä toteuttaa ja jos ei niin miten sen voisi toteuttaa eri tavalla?

Piirtojärjestyksen tulisi olla seuraavanlainen (1 = alin, 4 = ylin):
1. taustakuva
2. kartta (tileistä)
3. laatikko
4. kursori

Koodi johon edellä oleva piirtojärjestys tulisi tehdä:

Code: Select all

map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5
img = LoadImage("media/map.bmp")
kursori = LoadObject("media/crosshair.bmp")
ShowMouse OFF
Repeat
   PositionCamera -150, -900

    PositionObject kursori,MouseWX(),MouseWY()
    DrawImage img,0,0

    DrawGame
     
    Color cbsilver
    Box 10,10,100,100
    Color cbwhite
    Text 15,15, "Hello World!"
    

    DrawScreen
   
Forever
Onko CoolBasic tosiaan niin rajoittunut ettei sillä voi saada haluamaani piirtojärjestystä?

User avatar
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale » Sat Jun 06, 2009 10:46 pm

Latexi95 wrote:Tuhoaako CoolBasic muistipalat automaattisesti, kun ohjelma sammutetaan?
Varmuudella en osaa sanoa, mutta luulisin että tuhoaa. Kyllähän ohjelman sulkeminen vie jonkin aikaa jos mediaa tai muuta härpäkettä on muistissa.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Tyhmät kysymykset (II/2009)

Post by JATothrim » Sat Jun 06, 2009 10:55 pm

hm.. objekteja kun ei voi piirtää erikseen niin vastaus on: ei ole mahdollista noin, mutta näin on:

Code: Select all

map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5
img = LoadImage("media/map.bmp")


kursori = MakeObject()	'tehdään "tyhjä" objekti
img_kursori = LoadImage("media/crosshair.bmp")	'ladataan kursori kuvana	
HotSpot img_kursori	'keskitetään kuvan piirto kohta.

ShowMouse OFF

Repeat
   PositionCamera -150, -900

    PositionObject kursori,MouseWX(),MouseWY() 'siirretään objekti kursoria
    DrawImage img,0,0

    DrawGame
     
    Color cbsilver
    Box 10,10,100,100
    Color cbwhite
    Text 15,15, "Hello World!"
    
    //piirretään kursori kuvana.
    DrawImage img_kursori, MouseX(),MouseY()

    DrawScreen
   
Forever
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by Latexi95 » Sat Jun 06, 2009 10:57 pm

KilledWhale wrote: Varmuudella en osaa sanoa, mutta luulisin että tuhoaa. Kyllähän ohjelman sulkeminen vie jonkin aikaa jos mediaa tai muuta härpäkettä on muistissa.
Sitä epäilinkin, mutta halusin varmistaa.
Vieras wrote:Anteeksi että vaivaan vielä teitä tämän saman ongelman kanssa, mutta olen jo monta päivää miettinyt eri ratkaisutapoja piirtojärjestyksen korjaamiseen, mutta ei, ei siitä tule mitään. Kysyin täältäkin apua jo aikasemmassa aiheessa ja vaikuttaa siltä ettei edes kukaan täällä CoolBasicin foorumillakaan osaa tehdä haluamaani piirtojärjestystä. Projektini alkaa kaatua tähän ongelmaan ja se harmittaa kun sitä on tullut tehtyä jo päälle vuoden verran. Aloin vasta vähän aikaa sitten ruveta toteuttamaan parempaa graafista käyttöliittymää jolloin törmäsin tähän ongelmaan.

Haluaisin saada edes jonkinlaisen vastauksen tähän ongelmaani kokeneemmalta.

Eli onko tälläistä haluamaani piirtojärjestystä edes mahdollista CB:llä toteuttaa ja jos ei niin miten sen voisi toteuttaa eri tavalla?

Piirtojärjestyksen tulisi olla seuraavanlainen (1 = alin, 4 = ylin):
1. taustakuva
2. kartta (tileistä)
3. laatikko
4. kursori

Koodi johon edellä oleva piirtojärjestys tulisi tehdä:

Code: Select all

map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5
img = LoadImage("media/map.bmp")
kursori = LoadObject("media/crosshair.bmp")
ShowMouse OFF
Repeat
   PositionCamera -150, -900

    PositionObject kursori,MouseWX(),MouseWY()
    DrawImage img,0,0

    DrawGame
     
    Color cbsilver
    Box 10,10,100,100
    Color cbwhite
    Text 15,15, "Hello World!"
    

    DrawScreen
   
Forever
Onko CoolBasic tosiaan niin rajoittunut ettei sillä voi saada haluamaani piirtojärjestystä?
Älä laita hiirtä objektiksi. En nyt tässä äkkiseltään keksi tapausta, jossa hiiren pitäisi välttämättä olla objekti. Se voidaan aina "kiertää".
EDIT:

Oho... JATothrim ehätti edelle


Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Sat Jun 06, 2009 11:02 pm

Kiitos paljon molemmille vastauksesta, olen jo todella paljon kehittänyt projektiani sen mukaan että hiiri on objekti. Täytyy ruveta tekemään radikaaleja uudistuksia projektiin joihin kuluu aikaa todella paljon... mutta ei voi mitään. Onneksi sen sentään voi tehdä mainitsemallanne tavalla =).

User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset (II/2009)

Post by KillBurn » Sat Jun 06, 2009 11:17 pm

Vieras wrote:Kiitos paljon molemmille vastauksesta, olen jo todella paljon kehittänyt projektiani sen mukaan että hiiri on objekti. Täytyy ruveta tekemään radikaaleja uudistuksia projektiin joihin kuluu aikaa todella paljon... mutta ei voi mitään. Onneksi sen sentään voi tehdä mainitsemallanne tavalla =).
Laita molempina, kuva sekä objekti päällekkäin. Toimii kyllä.
Sumu Games: Sam, Ur eye!

Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Sat Jun 06, 2009 11:24 pm

KillBurn wrote:
Vieras wrote:Kiitos paljon molemmille vastauksesta, olen jo todella paljon kehittänyt projektiani sen mukaan että hiiri on objekti. Täytyy ruveta tekemään radikaaleja uudistuksia projektiin joihin kuluu aikaa todella paljon... mutta ei voi mitään. Onneksi sen sentään voi tehdä mainitsemallanne tavalla =).
Laita molempina, kuva sekä objekti päällekkäin. Toimii kyllä.
Joo kokeilinkin juuri äsken tuota, toimii hyvin, ei tarvinnut tehdä sittenkään suurta määrää työtä, kiitos vielä kerran kaikille auttaneille =).

Barbe-Q Michael
Newcomer
Posts: 2
Joined: Wed Jun 03, 2009 4:36 pm

Re: Tyhmät kysymykset (II/2009)

Post by Barbe-Q Michael » Sat Jun 06, 2009 11:31 pm

Öhh.. ;)
Alikansioista ja niiden alikansioista (rekursiivinen) etsiminen on hieman vaikeampaa. Tässä ohjeet:
(ota nykyinen kansio talteen muuttujaan currentdir():llä)
1. Aloita kansion sisältön läpikäynti StartSearch:lla
2. ota tiedostonimi muuttujaan FindFile():llä
3. Jos tiedosto on kansio (isDirectory() = 1) eikä tiedostonimi ole kumpikaan näistä: "." tai ".." lisää kansio kokoelmaan (vaikka "SearchDirectory") talteen.
4. Jos tiedosto ei ollutkaan kansio, listää se polkuineen toiseen kokoelmaan (esim. "FoundFiles"). Tässä kohtaa "suodata" ei toivotut tiedostotyypit pois! (eli et lisää niitä kokoelmaan)
5. Toista kohtia 2. - 4. kunnes findfile() palauttaa tyhjän merkkijonon.
6. Lopeta haku EndSearch:lla. Ota kansio kokoelmasta vaikka ensimmäinen instanssi (first()), ja vaihda nykyistä kansiota ChDir komennolla.
7. Toista 1. - 6. kohtia kunnes kansio kokoelma on TYHJÄ.
(palauta aloituskansio muuttujasta chdir:llä)
8. selaa tiedosto kokelmaasi. :D
Sain tuon toistelemaan noita .mp3 tiedostoja siitä kansiosta josta niitä etsittiin, mutta alikansiot ovat vielä työn alla. Eiköhän nekin mene kunhan laitetaan aikaa..
Saako tätä mitenkään toimimaan nuolten sijaan hiirellä?

Code: Select all

ALKU:
SetWindow "Load file"
courier=LoadFont("courier new",16)
Repeat 
    SetFont courier
    Color 47,210,23
    Locate 10,10
    AddText "Type music path"
    addText "i.e. C:\Music\ "
    c$=Input("")
    
        If KeyHit(28) Then 
        Goto etsi
        EndIf 
        
    DrawScreen
Forever 

etsi:
ClearText
CloseInput



Type FILES
    Field Name$
    Field Path$
    Field ID
EndType

currentID=0
ChDir c$
StartSearch
Repeat
SetWindow ""+currentID+" tracks"
    tmp$=FindFile()
    If Lower(Right(tmp,4))=".mp3" Then
        uusi.FILES = New(FILES)
        uusi\name=Replace(tmp,".mp3","")
        uusi\path=tmp
        uusi\ID=currentID
        currentID=currentID+1
    EndIf
Until tmp=""

searchID=0
Waittime=Timer()
SPEED=100
MultipleFILES=False

main: 
Repeat
x=2
y=2
For uusi.FILES = Each FILES
    If uusi\ID=searchID Then Color cbred Else Color cbwhite
    Text x,y,uusi\name
    y+15
    If y>300 Then x=x+200 : y=2
Next uusi

If KeyDown(cbkeydown) Then
    If Timer()-Waittime>SPEED Then
        SearchID=SearchID+1
        Waittime=Timer()
        SPEED=SPEED-5
        If SPEED<50 Then SPEED=50
    EndIf
Else
If KeyUp(cbkeyup) Then SPEED=100
EndIf

If KeyDown(cbkeyup) Then
    If Timer()-Waittime>SPEED Then
        SearchID=SearchID-1
        Waittime=Timer()
        SPEED=SPEED-2
        If SPEED<50 Then SPEED=50
    EndIf
Else
If KeyUp(cbkeydown) Then SPEED=100
EndIf

If SearchID>CurrentID-1 Then SearchID=0
If SearchID<0 Then SearchID=CurrentID-1

Color cbwhite
Text 400-TextWidth("Multi: 0")-2,2,"Multi: "+MultipleFILES

If KeyHit(cbkeyrshift) Then
    If MultipleFILES=1 Then MultipleFILES=0 Else MultipleFILES=1
EndIf

DrawScreen
If  KeyHit(cbkeyreturn) Then 
For uusi.FILES = Each FILES
    If uusi\ID=searchID Then
        file=PlaySound(uusi\path)
EndIf

Next uusi
EndIf
Until EscapeKey()

User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: Tyhmät kysymykset (II/2009)

Post by buke44 » Sun Jun 07, 2009 11:34 am

Code: Select all

'TALLENNUS
If KeyHit (cbkeys) Then
raht=OpenToEdit (rahat.tal) 
WriteLine raht, raha#
EndIf 
Mitäs vikaa tässä on kun tulee virheilmoitus
code101, Type mismatch. You must pass a different type of parameter to this function or command or array.

User avatar
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 9:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 » Sun Jun 07, 2009 11:36 am

buke44 wrote:

Code: Select all

'TALLENNUS
If KeyHit (cbkeys) Then
raht=OpenToEdit (rahat.tal) 
WriteLine raht, raha#
EndIf 
Mitäs vikaa tässä on kun tulee virheilmoitus
code101, Type mismatch. You must pass a different type of parameter to this function or command or array.
Elikkäs sun tarttee antaa OpentToEdit - komennolle parametriks merkkijono. Eli tuo rahat.tal täytyy olla lainausmerkeissä.

Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Mon Jun 08, 2009 9:49 pm

Kun tuolla CoolBasicin manuaalissa on OBJECTX sekä OBJECTY -komennot, jotka kertovat objektin sijainnin pelimaailman sisällä. Mitkä ovat vastaavat komennot ruudunkoordinaateille?

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by Latexi95 » Mon Jun 08, 2009 10:05 pm

X=ObjectX(obj)-CameraX()
Y=ObjectY(obj)+CameraY()
Olisikohan noin...
EDIT:

Anteeksi.
Laitoin vähän hutaisten. :oops:

Last edited by Latexi95 on Mon Jun 08, 2009 10:27 pm, edited 2 times in total.

Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Mon Jun 08, 2009 10:16 pm

Latexi95 wrote:X=ObjectX(obj)-CameraX()
Y=ObjectY(obj)+CameraY()
Olisikohan noin...
Kokeilin tuota ja erilaisia yhdistelmiä noista, mutta ei näyttänyt toimivan. Ihmettelen kyllä suuresti ettei CB:ssä näytä olevan objektin sijainnin ruudunkoordinaateissa kertovaa komentoa. Mahtaako edes mitään kiertotapaakaan olla...

User avatar
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 9:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 » Mon Jun 08, 2009 10:20 pm

CBKK on ystävänne. Tässä olkaapa hyvät.

Guest

Re: Tyhmät kysymykset (II/2009)

Post by Guest » Mon Jun 08, 2009 10:31 pm

Sly_Jack0 wrote:CBKK on ystävänne. Tässä olkaapa hyvät.
Kiitoksia, nyt toimii hyvin =)

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 » Tue Jun 09, 2009 8:04 pm

Miten tehdään semmonen systeemi, joka etsii tietystä kansiosta musiikkia ja soittaa sen järjestyksessä?

on kyllä liian vaikea homma minulle..
ja voisitko myös kommentoida koodia?jotta oppisin. :roll:

Locked