Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
project coder
Newcomer
Posts: 27
Joined: Mon Aug 27, 2007 9:23 pm
Location: Kajaani

Re: Tyhmät kysymykset

Post by project coder »

-Z- wrote:

Code: Select all

koodia...
Nyt on EndIf:it paikoillaan, ja koodia muutenkin korjailtu, muttei siltikään toimi. End riville kolme = ohjelma rullaa yhä vaikka maailmanloppuun asti. Voisiko joku oikeasti osaava auttaa?

(Yhtään endifiä ei muuten edes puuttunut, yksi oli vain väärässä kohtaa)
Onko DUDE ja MOVEGRID luotuna, koska kolmannelle riville pääsee vain, jos molempia on vähintään yksi.
iTKEVAnAKKI wrote:

Code: Select all

If zombie/huomannut=OFF Then
Miksi tulee "Operand type mismatch. You can't perform this mathematical operation to these operands. " Eli yritän laskea jotain? vaikka eihän tuossa tehdä mitään "laitonta"?
Muuta jakoviiva "/" kenoviivaksi "\".
Kotisivut: (Uusitaan)
Secret Unit War (Frozen)
Tilekarttaeditori (Frozen)
Käyttöliittymän osia
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

Mahdollisesti erittäin tyhmä kysymys, mutta...

Ongelmani koskee koodin suorittamista. En pääse alkua pitemmälle koska ohjelma väittää koodin olevan jo suoritettavana. Miten pitäisi toimia?
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Quadron wrote:Mahdollisesti erittäin tyhmä kysymys, mutta...

Ongelmani koskee koodin suorittamista. En pääse alkua pitemmälle koska ohjelma väittää koodin olevan jo suoritettavana. Miten pitäisi toimia?
Pistä CB:n ikkuna alas ja sieltäpä löytyy. Jos taas olet Vista-käyttäjä, muistahan suorittaa CB... olikos se nyt järjestelmänvalvojana, kuitenkin suurimmilla mahdollisilla oikeuksilla.
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset

Post by vilQuri »

Löysin vnhoilta foorumeilta siitä aavesoturin tekemästä mega mageesta raycasteri topicista tälläisen koodin:

Code: Select all

map = LoadTIL("media/cdm2.til")
ObjectPickable map, ON

player = MakeObject()
ObjectRange player, 10

SetupCollision player, map, 1, 4, 2

Repeat


MoveObject player, (UpKey() - DownKey()) * 2
TurnObject player, (LeftKey() - RightKey()) * 2

DrawGame //piirretaan objektit (eli lähinnä kartta) ensin

cast(player, 400, 300, 60, 1)

Color cbred:Text 0,0,"FPS: "+FPS()

DrawScreen
Forever

Function cast(obj, w, h, fov, qlt#) //objekti josta raycasting tapahtuu, leveys, korkeus, näkökenttä, laatu (1 on paras, meinaa piirrettavan pystysuoran leveyttä)

Color 0, 0, 0
Box 0, 0, w, h //peitetään alue mustalla

oa# = ObjectAngle(obj) - fov * 0.5 //lasketaan vasemman reunimmaisen viivan kulma kamerasta(objektista) nähden

dpdist# = w * 0.5 / Tan(fov * 0.5) //dpdist aka DrawingPlaneDistance(kamerasta)

lines# = RoundUp(w / qlt#) //montako viivaa tarvitaan

For i = 0 To lines

RotateObject obj, oa# + fov * (i / lines#) //käännetään objekti oikeaan kulmaan; tasaisin välein käydään koko näkökenttä läpi
ObjectPick obj //suoritetaan poiminta

dist# = Distance(ObjectX(obj), ObjectY(obj), PickedX(), PickedY()) * Cos(fov * (i / lines#) - fov * 0.5)
//dist# = etäisyys poimittuun kohtaan * cos(poimintakulma objektista nähden)
//tuo * cos(..) poistaa sen kalansilmävääristymän biggrin.gif

If dist#>200 And dist#<455 Then
colorfact#=1.0-(dist-200)/255 //Piirretään "himmenys"
ElseIf dist#>455
colorfact#=-1 //Ei pirretä
Else
colorfact#=1 //Normaali väri
EndIf
If colorfact>-1 //Pirretään jos ollaan näkökentän "Sisällä"
If PickedAngle() = 0 Or PickedAngle() = 180 Then //xsuuntaisista seinistä tehää vähän tummempia
col=Max(Min(100*colorfact,255),0)
Color col,col,col
Else
col=Max(Min(200*colorfact,255),0)
Color col,col,col
EndIf
lheight# = 32 / dist# * dpdist# //viivan_korkeus = seinän_oikea_korkeus / etäisyys_seinästä * pelaajan_etäisyys_piirtotasosta
Box w - i * qlt#, h / 2 - lheight# / 2, qlt#, lheight# //piirretään viiva
EndIf
Next i

RotateObject obj, oa# + fov * 0.5 //käännetään objekti takaisin alkuperäiseen kulmaansa
End Function

Function LoadTIL(file$)
f=OpenToEdit(file)
SeekFile f,824
tw=ReadInt(f):th=ReadInt(f)
mw=ReadInt(f):mh=ReadInt(f)
SeekFile f,FileOffset(f)+4+(mw*mh*4)+4
mappi=MakeMap(mw,mh,tw,th)
For y=1 To mh
For x=1 To mw
EditMap mappi,2,x,y,ReadInt(f)
Next x
Next y
CloseFile f
Return mappi
End Function 
Koodin tajuan muuten kohtuullisesti mutta miten ihmeessä siihen saa tekstuurit kun en mikään haka ole TileMappien muokkailussa, se Aavesoturin kartta systeemi on todella helppo käsiteltävä, siihen osaan tekstuurit laittaa
Topikki löytyy täältä http://www.coolbasic.com/oldforums/inde ... topic=2829
P.S miten niin 3D on cb:llä mahdotonta ei minusta
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- »

project coder wrote:
-Z- wrote:

Code: Select all

koodia...
Nyt on EndIf:it paikoillaan, ja koodia muutenkin korjailtu, muttei siltikään toimi. End riville kolme = ohjelma rullaa yhä vaikka maailmanloppuun asti. Voisiko joku oikeasti osaava auttaa?

(Yhtään endifiä ei muuten edes puuttunut, yksi oli vain väärässä kohtaa)
Onko DUDE ja MOVEGRID luotuna, koska kolmannelle riville pääsee vain, jos molempia on vähintään yksi.
Juu, eli sehän toimii, kiitos kovin. Teen nyt koodissa sillä tavalla, että koodin alussa ja aina kun kaikki movegridit poistetaan, luodaan uusi jonnekkin periferiaan. Toimiiko tämä parhaiten, vai onko jotain muuta, vähemmän purkkaista syteemiä?
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

vilQuri wrote:Löysin vnhoilta foorumeilta siitä aavesoturin tekemästä mega mageesta raycasteri topicista tälläisen koodin:

Code: Select all

map = LoadTIL("media/cdm2.til")
ObjectPickable map, ON

player = MakeObject()
ObjectRange player, 10

SetupCollision player, map, 1, 4, 2

Repeat


MoveObject player, (UpKey() - DownKey()) * 2
TurnObject player, (LeftKey() - RightKey()) * 2

DrawGame //piirretaan objektit (eli lähinnä kartta) ensin

cast(player, 400, 300, 60, 1)

Color cbred:Text 0,0,"FPS: "+FPS()

DrawScreen
Forever

Function cast(obj, w, h, fov, qlt#) //objekti josta raycasting tapahtuu, leveys, korkeus, näkökenttä, laatu (1 on paras, meinaa piirrettavan pystysuoran leveyttä)

Color 0, 0, 0
Box 0, 0, w, h //peitetään alue mustalla

oa# = ObjectAngle(obj) - fov * 0.5 //lasketaan vasemman reunimmaisen viivan kulma kamerasta(objektista) nähden

dpdist# = w * 0.5 / Tan(fov * 0.5) //dpdist aka DrawingPlaneDistance(kamerasta)

lines# = RoundUp(w / qlt#) //montako viivaa tarvitaan

For i = 0 To lines

RotateObject obj, oa# + fov * (i / lines#) //käännetään objekti oikeaan kulmaan; tasaisin välein käydään koko näkökenttä läpi
ObjectPick obj //suoritetaan poiminta

dist# = Distance(ObjectX(obj), ObjectY(obj), PickedX(), PickedY()) * Cos(fov * (i / lines#) - fov * 0.5)
//dist# = etäisyys poimittuun kohtaan * cos(poimintakulma objektista nähden)
//tuo * cos(..) poistaa sen kalansilmävääristymän biggrin.gif

If dist#>200 And dist#<455 Then
colorfact#=1.0-(dist-200)/255 //Piirretään "himmenys"
ElseIf dist#>455
colorfact#=-1 //Ei pirretä
Else
colorfact#=1 //Normaali väri
EndIf
If colorfact>-1 //Pirretään jos ollaan näkökentän "Sisällä"
If PickedAngle() = 0 Or PickedAngle() = 180 Then //xsuuntaisista seinistä tehää vähän tummempia
col=Max(Min(100*colorfact,255),0)
Color col,col,col
Else
col=Max(Min(200*colorfact,255),0)
Color col,col,col
EndIf
lheight# = 32 / dist# * dpdist# //viivan_korkeus = seinän_oikea_korkeus / etäisyys_seinästä * pelaajan_etäisyys_piirtotasosta
Box w - i * qlt#, h / 2 - lheight# / 2, qlt#, lheight# //piirretään viiva
EndIf
Next i

RotateObject obj, oa# + fov * 0.5 //käännetään objekti takaisin alkuperäiseen kulmaansa
End Function

Function LoadTIL(file$)
f=OpenToEdit(file)
SeekFile f,824
tw=ReadInt(f):th=ReadInt(f)
mw=ReadInt(f):mh=ReadInt(f)
SeekFile f,FileOffset(f)+4+(mw*mh*4)+4
mappi=MakeMap(mw,mh,tw,th)
For y=1 To mh
For x=1 To mw
EditMap mappi,2,x,y,ReadInt(f)
Next x
Next y
CloseFile f
Return mappi
End Function 
Koodin tajuan muuten kohtuullisesti mutta miten ihmeessä siihen saa tekstuurit kun en mikään haka ole TileMappien muokkailussa, se Aavesoturin kartta systeemi on todella helppo käsiteltävä, siihen osaan tekstuurit laittaa
Topikki löytyy täältä http://www.coolbasic.com/oldforums/inde ... topic=2829
P.S miten niin 3D on cb:llä mahdotonta ei minusta
Eh... tuo ei ole truu 3D:tä. Siinähän vain tehdään 3D-projektio 2D-kartasta. Tuossa systeemissä ei voisi esimerkiksi olla kahta esinettä päällekkäin, eikä montaa päällekkäistä kerrosta. Säätämällä saa kuitenkin hienoja systeemejä, esimerkiksi Doom 2 on mahtava peli, ja IMHO yksi graafisesti hienoimpia pelejä ;D ( niin alkeellisella tekniikalla niin komia peli, whoa ). Eikä oikeakaan 3D ole niin vaikeaa, hidasta lähinnä. Esimerkiksi 3D-pisteen piirtää näytölle kolmella rivillä koodia tai yhdellä funktiokutsulla, ihan sama kaikkien muidenkin simppeleiden kuvioiden kanssa, vaikka kuution. ( jos vaan keksisi jonkun ovelaakin ovelamman HSR-kikan, joka toimisi edes jotenkuten ja olisi nopea... )

Döh, nyt mentiin aiheesta ohi ja pahan kerran. Siissiis, ethän tokikaan tilemappeja muokkaa, jos haluat tuohon tekstuurit. Sinun pitää tehdä eri korkuisia kuvia tekstuuristasi ja piirtää ne viivojen sijaan. Periaatteessa siis latausaikojen kannalta on mahdotonta tehdä systeemiä, jossa olisi kunnon tekstuurit. Mutta tällainen vähän rajoitettu tosiaan onnistuu. Toki jos haluat erilaisia riippuen tilemapista, sinun pitää tarkistaa, mihin tileen on törmätty.
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

koodaaja wrote:Pistä CB:n ikkuna alas ja sieltäpä löytyy.
Ihan en tainnut ymmärtää mitä tuolla ikkunalla tarkoitat. Virheilmoitus on tälläinen.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Quadron wrote:
koodaaja wrote:Pistä CB:n ikkuna alas ja sieltäpä löytyy.
Ihan en tainnut ymmärtää mitä tuolla ikkunalla tarkoitat. Virheilmoitus on tälläinen.
Siis CB:n editorin ikkunaa tarkoitin.

Ja olisit lukenut koko viestin; vista-käyttäjien on suoritettava CB järjestelmänvalvojan oikeuksilla.
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset

Post by vilQuri »

Heh kiitos neuvosta taidan vielä jättäytyä 3D:stä 2D:hen :mrgreen:
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

koodaaja wrote:Siis CB:n editorin ikkunaa tarkoitin.

Ja olisit lukenut koko viestin; vista-käyttäjien on suoritettava CB järjestelmänvalvojan oikeuksilla.
Luin kyllä koko viestisi, järjestelmänvalvojana yritän CB:tä käyttääkkin. En vain oikein ymmärrä mitä tarkoitat "ikkunan alas laittamisella".
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Quadron wrote:
koodaaja wrote:Siis CB:n editorin ikkunaa tarkoitin.

Ja olisit lukenut koko viestin; vista-käyttäjien on suoritettava CB järjestelmänvalvojan oikeuksilla.
Luin kyllä koko viestisi, järjestelmänvalvojana yritän CB:tä käyttääkkin. En vain oikein ymmärrä mitä tarkoitat "ikkunan alas laittamisella".
Eh... siis tehtäväpalkkiin : D sinne käynnistä-namiskan viereen. Pienentämisestäkin puhutaan.
project coder
Newcomer
Posts: 27
Joined: Mon Aug 27, 2007 9:23 pm
Location: Kajaani

Re: Tyhmät kysymykset

Post by project coder »

-Z- wrote:
project coder wrote:
-Z- wrote:

Code: Select all

koodia...
Nyt on EndIf:it paikoillaan, ja koodia muutenkin korjailtu, muttei siltikään toimi. End riville kolme = ohjelma rullaa yhä vaikka maailmanloppuun asti. Voisiko joku oikeasti osaava auttaa?

(Yhtään endifiä ei muuten edes puuttunut, yksi oli vain väärässä kohtaa)
Onko DUDE ja MOVEGRID luotuna, koska kolmannelle riville pääsee vain, jos molempia on vähintään yksi.
Juu, eli sehän toimii, kiitos kovin. Teen nyt koodissa sillä tavalla, että koodin alussa ja aina kun kaikki movegridit poistetaan, luodaan uusi jonnekkin periferiaan. Toimiiko tämä parhaiten, vai onko jotain muuta, vähemmän purkkaista syteemiä?
Siirrät sen MOVEGRIDin luonnin sen ekan silmukan alkuun:

Code: Select all

For soldier.DUDE = Each DUDE

        If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15 And MouseWY()<ObjectY(soldier\obj)-15 And MouseWY()>ObjectY(soldier\obj)+15 Then        
            If MouseHit(1) Then                
                For i = 1 To 4
                newmgrid.MOVEGRID = New(MOVEGRID)
                newmgrid\obj = CloneObject(greengrid)
                CloneObjectPosition  newmgrid\obj, soldier\obj
                RotateObject newmgrid\obj, rotation
                MoveObject newmgrid\obj, 30
                rotation + 90
                Next i
            EndIf
        EndIf

    For mgrid.MOVEGRID = Each MOVEGRID

        If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15 And MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15 Then
            If MouseHit(1) Then
                CloneObjectPosition soldier\obj, mgrid\obj
                For grid.MOVEGRID = Each MOVEGRID
                    DeleteObject grid\obj
                    Delete grid   
                Next grid
                Exit
             EndIf
        EndIf
        
    Next mgrid  
    Next soldier
Kotisivut: (Uusitaan)
Secret Unit War (Frozen)
Tilekarttaeditori (Frozen)
Käyttöliittymän osia
Szanne
Member
Posts: 50
Joined: Thu Aug 30, 2007 5:12 pm
Location: Suomi

Re: Tyhmät kysymykset

Post by Szanne »

Minulle ei aina tuo CoolBasic ohjelman ikkuna tule tuonne alapalkkiin, joten minun pitää poistaa se tehtävän hallinnasta. Tätä esiintyy silloin, kun koodin kääntämisen aikaan teen jotain muutakin.
2X - in English viewtopic.php?f=18&t=3057
2X - suomeksi viewtopic.php?f=11&t=3058

Olen Jop Studio vanhalta foorumilta.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Szanne wrote:Minulle ei aina tuo CoolBasic ohjelman ikkuna tule tuonne alapalkkiin, joten minun pitää poistaa se tehtävän hallinnasta. Tätä esiintyy silloin, kun koodin kääntämisen aikaan teen jotain muutakin.
Kyllä se tulee, kestää vain. Parhaimmillaan menee puolisenkin minuuttia. Ja painahan windows+D (windows=namiska, jossa on lipun kuva) tai naksi muut ikkunat alas niin näet työpöydän. Siellä se yleensä norkoilee, jos on klikannut jotain ikkunaa kääntämisen aikana.
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

Kysymys tuntuu nyt entistä tyhmemmältä, mutta vieläkään en oikein tajua. Pystyn kyllä pienentämään ikkunan, mutta sen tarkoituksesta ongelman ratkaisuun en ymmärrä. Ongelmahan on, että ohjelma väittää koodin olevan jo ajettuna, vaikka itse sitä en ole käskenyt näin tekemään.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Quadron wrote:Kysymys tuntuu nyt entistä tyhmemmältä, mutta vieläkään en oikein tajua. Pystyn kyllä pienentämään ikkunan, mutta sen tarkoituksesta ongelman ratkaisuun en ymmärrä. Ongelmahan on, että ohjelma väittää koodin olevan jo ajettuna, vaikka itse sitä en ole käskenyt näin tekemään.
Katsos, yleensä käy näin: tuplaklikkaat kääntämisnuolta tai unohdat sulkea ohjelmasi, ja jatkat koodin kirjoittamista. Silloin wanha ajo jää päälle, tai siis taakse, nimittäin CB:n ikkunan taakse työpöydälle. Sen sulkemalla saat taas käännettyä ohjelman. Ja tämän näet vasta, kun pienennät. ( toivon mukaan tämä oli tyhjentävä vastaus : D )
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

koodaaja wrote:Katsos, yleensä käy näin: tuplaklikkaat kääntämisnuolta tai unohdat sulkea ohjelmasi, ja jatkat koodin kirjoittamista. Silloin wanha ajo jää päälle, tai siis taakse, nimittäin CB:n ikkunan taakse työpöydälle. Sen sulkemalla saat taas käännettyä ohjelman. Ja tämän näet vasta, kun pienennät. ( toivon mukaan tämä oli tyhjentävä vastaus : D )
Itsekin olisin toivonut sen olevan, mutta ei. :) Työpöydällä ei nimittäin ainakaan näyttäisi olevan mitään käynnissä.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Quadron wrote:
koodaaja wrote:Katsos, yleensä käy näin: tuplaklikkaat kääntämisnuolta tai unohdat sulkea ohjelmasi, ja jatkat koodin kirjoittamista. Silloin wanha ajo jää päälle, tai siis taakse, nimittäin CB:n ikkunan taakse työpöydälle. Sen sulkemalla saat taas käännettyä ohjelman. Ja tämän näet vasta, kun pienennät. ( toivon mukaan tämä oli tyhjentävä vastaus : D )
Itsekin olisin toivonut sen olevan, mutta ei. :) Työpöydällä ei nimittäin ainakaan näyttäisi olevan mitään käynnissä.
Mitäh O: tapahtuuko tämä aina kun yrität kääntää vai randomisti silloin tällöin? Kuulostaa nimittäin vista-ongelmalta..
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Itselläni käy välillä noin (Win2K), mutta ohjelman saa pelastettua alt-tabilla. Valitse cbrun.exe.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

koodaaja wrote:Mitäh O: tapahtuuko tämä aina kun yrität kääntää vai randomisti silloin tällöin? Kuulostaa nimittäin vista-ongelmalta..
Kyllä, aina näin tapahtuu yrittäessäni kääntää, joten alkua pidemmälle en ole koko ohjelmaan tutustumisessa päässyt. Ja Vistaahan käytän, joten hyvinkin mahdollista että se on ongelma...
Locked