Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Taatero
Advanced Member
Posts: 384
Joined: Tue May 27, 2008 6:06 pm

Re: Tyhmät kysymykset

Post by Taatero »

Nasse-setä wrote:
Nasse-setä wrote:Hommailen semmoista ruutupohjaista(liikutaan ruuduissa) ylhäältä kuvattua graafista sotapeliä, jonka tilet tulee olemaan kooltaan 32x32, mutta tarve olisi nähdä kartta myös "kauempaa" eli että ruudulle mahtuisi enemmän tilejä tavallaan niinku zoom-out. Ilman tätä ominaisuutta kuva kartasta jää vain paikalliseksi, eikä pelaaja saa kunnon kuvaa koko kartasta. Mutta miten toteuttaa? Lataanko erikokoisia karttoja enemmän MultiMapSystemillä ja sitten vaihtelen niitä jos pelaaja haluaa nähdä kokonaisuuden? Montaks siihen MultiMapSystem:iin menee karttoja niin että pelittää, kun kartoista kuitenkin tulossa suuria ja niitä tulee monta.

Ja toinen juttu; peliin tulee(varmaankin) grafiikkojen laadun valinta. Onko se sillee et mä vaan lataan eri kokoiset/resoluutioiset grafiikat sen mukaan miten pelaaja haluaa ja käytän niitä?
Ettei vaan hautautuisi, niin voisisiko joku vastata tähän aimempaan kysymykseeni?
Aloittelioille varmaan helpompi multimapilla, kun kerran sellainen vaihtoehto on. Itse en tekisi grafiikanvalintaa, se vain monimutkaistaa asioita turhaat. Grafiikan laadulla ei ole kovinkaan paljoa väliä, kun puhutaan suorituskyvvystä cb:llä. (?) Tai sitten voit laittaa resoluution valinnan, jos välttämättä jotain säätöjuttuja haluat.
[color=#40BF00][u]koodaaja[/u][/color] wrote:Täyden turvan takaamiseksi avain olisi myös kuljetettava offlinenä suoraan tulevien viestien lähettäjältä niiden vastaanottajalle laitakaupungin hämärissä yöneljältä ja varmistettava, ettei kumpaakaan osapuolta seurata. Popliinitakkia suositellaan.
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset

Post by skorpioni-cb »

Code: Select all

FrameLimit 40 'Rajoita suoritus

map=LoadMap("C:\Users\Jani\Desktop\oma\moottori.til","C:\Users\jani\Desktop\oma\Pictures\tileset.bmp") 'Lataa kartta
[b]PlayObject map,0,0,0.5[/b]
guy=LoadObject("C:\Users\jani\Desktop\oma\Pictures\objectini\peli_objecti.bmp",72) 'Lataa "pelaaja"
SetupCollision guy,map,2,4,1

Repeat

  If LeftKey() Then 
    TurnObject guy,5
  ElseIf RightKey() Then 
    TurnObject guy,-5
  ElseIf UpKey()
    MoveObject guy,2
  ElseIf DownKey() Then
    MoveObject guy,-2
  EndIf 
  
   UpdateGame 
    CloneCameraPosition guy
   DrawScreen 
Until EscapeKey()
Miksi ei toimi "paksunnettu" osa? Ette voi testata, mutta lähetän liitteenä tilesetin:
Toimiva cb-foorumeilla versio.jpg
Toimiva cb-foorumeilla versio.jpg (12.43 KiB) Viewed 12601 times
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.
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x »

Olethan muistanut animoida tilekartan karttaeditorilla?
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset

Post by Ilkka »

Terve. Tuli pikku ongelma Coolbasicin kans. Aivan sama mitä koodia kirjoitan ja laitan F5 tulee ilmoitus:
"Can't save this file. Check the writing permissions." Jonka jälkeen se käynistää viimeisimmän käytetyn esimerkkiohjelman. Käänsin tämän näin.:
"Et voi tallentaa tätä arkistoa. Tarkista kirjoitus oikeudet." Mikä on tähän syy. Voisiko joku auttaa?
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

Vista? Aja CBEditor.exe järjestelmänvalvojana.
Koitappa myös vaikka poistaa IDE-kansiosta cbRun.exe tiedosto ja sitten koita kääntää F5:lla uudelleen.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset

Post by Ilkka »

VesQ: Ei oo vista mut , cbRunin poisto autto :)
Image
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset

Post by skorpioni-cb »

otto90x wrote:Olethan muistanut animoida tilekartan karttaeditorilla?
Olen muistanut.
EDIT:

Ratkaisin jo.

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.
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Tyhmät kysymykset

Post by jesperx96 »

Ette pysty testata, mutta lähetin kuitenkin, koska en itse osaa tätä ratkaista.
Kertokaa samalla, jos koodissa on jotain outouksia.
Media\ukkeli2-on tarkoituksella viiva perässä, koska olen muokannut sitä.
EDIT:

Jumalauta! Unohdin tietysti tärkeimmän: eli CB väittää, ettei löydä repeattia, kun testaan ohjelmaa. Yleensä tämä on tarkoittanut minulla, että koodissa on ollut If-komento, muttei Theniä.
Olen kyllä tarkastanut koodin ainakin viisi kertaa.

Code: Select all

Type VIHUT
Field hp
EndType

Type PANOKSET
Field obj
EndType

SCREEN 1024,768,0,0

kartta=LoadMap("C:\Projekti\Media\maze.til","C:\Projekti\Media\tileset2.png")
ukko=LoadObject("Media\soldier.bmp",360)
vihu=LoadObject("Media\ukkeli2-.bmp",360)
pati=LoadObject("Media\bullet.bmp",360)
tähtäin=LoadObject("Media\crosshair.bmp",360)

SetupCollision ukko,kartta,1,4,2

ShowObject pati,OFF
ShowObject vihu,OFF

                    Repeat

        If KeyDown (cbkeyw) Then MoveObject ukko,2
        If KeyDown (cbkeys) Then MoveObject ukko,-1
        If KeyDown (cbkeya) Then MoveObject ukko,0,-1
        If KeyDown (cbkeyd) Then MoveObject ukko,0,1
        

    CloneCameraPosition ukko
    
    PointObject ukko,tähtäin
    ScreenPositionObject tähtäin, MouseX(), MouseY()
    
    PointObject vihu,ukko
    
    reload=5
    
        If reload>0 Then reload=reload-1
        
        If MouseHit(1) And reload=0 Then
        luoti.PANOKSET= New(PANOKSET)
        luoti\obj=CloneObject(pati)
        CloneObjectPosition luoti\obj, ukko
        CloneObjectOrientation luoti\obj, ukko
        EndIf
        
        For luoti.PANOKSET = Each PANOKSET
        MoveObject luoti\obj,15
        Next luoti
        
    For vih.VIHUT=Each (VIHUT)
    vih\hp=100
    
        If ObjectsOverlap(luoti\obj,vihu) Then vih\hp = vih\hp-25
        If vih\hp < 1 Then
        DeleteObject vihu
        Text 0,0,"Voitit botin! Eiks ollukkin vaikeeta?"
        EndIf
        
    DrawScreen



                    Forever
                    
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset

Post by Awaclus »

jesperx96 wrote:Jumalauta! Unohdin tietysti tärkeimmän: eli CB väittää, ettei löydä repeattia, kun testaan ohjelmaa.
Jo löytyi!

Code: Select all

    For vih.VIHUT=Each (VIHUT)
    vih\hp=100
   
        If ObjectsOverlap(luoti\obj,vihu) Then vih\hp = vih\hp-25
        If vih\hp < 1 Then
        DeleteObject vihu
        Text 0,0,"Voitit botin! Eiks ollukkin vaikeeta?"
        EndIf
       
    DrawScreen
Puuttuu Next.
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Tyhmät kysymykset

Post by jesperx96 »

On se jännä tämä CoolBasicin ihmeellinen maailma. Kiitos!
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu »

Olen kohdannut aivan helvetin ärsyttävän ongelman desimaalien kanssa. Kyseessä on kaiketi jonkinlainen CB -bugi.

Code: Select all

ARVO# = 0.5
ASKEL# = 0.1

Repeat

    // Arvon muuttaminen nuolinäppäimillä
    If KeyHit(cbkeyup)   Then ARVO = ARVO + ASKEL
    If KeyHit(cbkeydown) Then ARVO = ARVO - ASKEL
    
    // Pidetään arvo välillä -1.0 - 1.0
    ARVO = Min(Max(ARVO,-1.0),1.0)

    Text 20,20,ARVO
    Text 10,280,"Muuta arvoa nuolinäppäimillä."

DrawScreen
Forever
Tämä koodi demonstroi ongelmaa mainiosti. Ruudulla näkyy numero 0.5, ja kun painat alanuolta, tuosta numerosta vähennetään 0.1. Kun muutaman kerran näppäintä painat, saavutat luvun 0.0. Tai niin ainakin pitäisi käydä. CoolBasic vissiin hämmentyy luvusta 0.0, sillä ruudulla lukeekin jotain älytöntä kuten "1.4008e-008". Joskus myös luku 0.1 menee sekaisin.
Tämä on erityisen kiusallista, sillä työstän ohjelmaa jossa on paljon muuttujia, joita voidaan nappuloilla pienennellä ja suurennella. Voiko tämän kiertää jotenkin järkevästi?
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset

Post by skorpioni-cb »

Ruuttu wrote:Olen kohdannut aivan helvetin ärsyttävän ongelman desimaalien kanssa. Kyseessä on kaiketi jonkinlainen CB -bugi.

Code: Select all

ARVO# = 0.5
ASKEL# = 0.1

Repeat

    // Arvon muuttaminen nuolinäppäimillä
    If KeyHit(cbkeyup)   Then ARVO = ARVO + ASKEL
    If KeyHit(cbkeydown) Then ARVO = ARVO - ASKEL
    
    // Pidetään arvo välillä -1.0 - 1.0
    ARVO = Min(Max(ARVO,-1.0),1.0)

    Text 20,20,ARVO
    Text 10,280,"Muuta arvoa nuolinäppäimillä."

DrawScreen
Forever
Tämä koodi demonstroi ongelmaa mainiosti. Ruudulla näkyy numero 0.5, ja kun painat alanuolta, tuosta numerosta vähennetään 0.1. Kun muutaman kerran näppäintä painat, saavutat luvun 0.0. Tai niin ainakin pitäisi käydä. CoolBasic vissiin hämmentyy luvusta 0.0, sillä ruudulla lukeekin jotain älytöntä kuten "1.4008e-008". Joskus myös luku 0.1 menee sekaisin.
Tämä on erityisen kiusallista, sillä työstän ohjelmaa jossa on paljon muuttujia, joita voidaan nappuloilla pienennellä ja suurennella. Voiko tämän kiertää jotenkin järkevästi?
Laita vertailu, Näin:

Code: Select all

ARVO# = 0.5
ASKEL# = 0.1

Repeat

    // Arvon muuttaminen nuolinäppäimillä
    If KeyHit(cbkeyup)   Then ARVO = ARVO + ASKEL
    If KeyHit(cbkeydown) Then ARVO = ARVO - ASKEL
    
    If arvo<=0.0 Then arvo=0.0   
    
    // Pidetään arvo välillä -1.0 - 1.0
    ARVO = Min(Max(ARVO,-1.0),1.0)

    Text 20,20,ARVO
    Text 10,280,"Muuta arvoa nuolinäppäimillä."

DrawScreen
Forever
En saanut 1.4008e-008-juttua pois, mutta luku ei mene alle nollan.
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.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu »

skorpioni-cb wrote:En saanut 1.4008e-008-juttua pois, mutta luku ei mene alle nollan.
Kiitos mutta ei kiitos. Juuri se 1.4008e-008 -juttu tässä häiritsee.
User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: Tyhmät kysymykset

Post by buke44 »

Mistä
ReadFloat failed.
virheilmoitus voisi johtua?

Code: Select all

If KeyHit (cbkeyo) Then Floatti=ReadFloat (t)
Readfloat koodinpätkä on tollanen. Ja olen tarkistanut polun useita kertoja.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

Ruuttu wrote:Olen kohdannut aivan helvetin ärsyttävän ongelman desimaalien kanssa. Kyseessä on kaiketi jonkinlainen CB -bugi.

Code: Select all

ARVO# = 0.5
ASKEL# = 0.1

Repeat

    // Arvon muuttaminen nuolinäppäimillä
    If KeyHit(cbkeyup)   Then ARVO = ARVO + ASKEL
    If KeyHit(cbkeydown) Then ARVO = ARVO - ASKEL
    
    // Pidetään arvo välillä -1.0 - 1.0
    ARVO = Min(Max(ARVO,-1.0),1.0)

    Text 20,20,ARVO
    Text 10,280,"Muuta arvoa nuolinäppäimillä."

DrawScreen
Forever
Tämä koodi demonstroi ongelmaa mainiosti. Ruudulla näkyy numero 0.5, ja kun painat alanuolta, tuosta numerosta vähennetään 0.1. Kun muutaman kerran näppäintä painat, saavutat luvun 0.0. Tai niin ainakin pitäisi käydä. CoolBasic vissiin hämmentyy luvusta 0.0, sillä ruudulla lukeekin jotain älytöntä kuten "1.4008e-008". Joskus myös luku 0.1 menee sekaisin.
Tämä on erityisen kiusallista, sillä työstän ohjelmaa jossa on paljon muuttujia, joita voidaan nappuloilla pienennellä ja suurennella. Voiko tämän kiertää jotenkin järkevästi?
Itse luulen vian olevan "-1.0"-kohdassa. Kokeile vaihtaa se nollaksi. En tesminyt mutta ehkä näin.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset

Post by Tuxi »

Vika on ehkä siinä, että floatit eivät ole kovin tarkkoja. (Vaikka laskutoimitus on noin yksinkertainen)
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: Tyhmät kysymykset

Post by m1c »

Ruuttu wrote:Olen kohdannut aivan helvetin ärsyttävän ongelman desimaalien kanssa. Kyseessä on kaiketi jonkinlainen CB -bugi.
http://en.wikipedia.org/wiki/Floating_p ... y_problems
Last edited by m1c on Tue May 26, 2009 1:17 pm, edited 1 time in total.
zHelmet
Member
Posts: 73
Joined: Mon Nov 10, 2008 3:55 pm

Re: Tyhmät kysymykset

Post by zHelmet »

Miten saan tähän alla olevaani koodiin järkevän törmäys tarkastuksen koska en itse mitenkään saa niin että katotaan juuri oikean väliajoin että kumpi piste on kyseessä ja tuo on sitten dda algoritmi (jos se auttais)
ja koodi

Code: Select all

SCREEN 1440,900
px = 640
py = 640
angle# = 1
Dim kartta(1440/64,900/64)
For x = 0 To 10
For y = 0 To 10
kartta(x,y) = 0
If x > 9 Then kartta(x,y) = 1
Next y
Next x
Repeat
    For x = 0 To 1440/64
        For y = 0 To 900/64
            If kartta(x,y) Then
                Color 255,0,0
                Box x*64,y*64,64,64
            EndIf 
        Next y
    Next x

    px = MouseX()
    py = MouseY()
    angle#= WrapAngle(angle# + (LeftKey()-RightKey())*.3)
    For i = 0 To 100
        Line i*64,0,i*64,900
        Line 0,i*64,1440,i*64
    Next i
    //Ylös
    
    
    //alas: Ay# = rounded_down(Py/64) * (64) + 64
    //oikea: Bx# = rounded_down(Px/64) * (64) + 64
    //vasen: Bx# = rounded_down(Px/64) * (64) - 1
    
    Ya# = -64
    Xa# = RoundDown(64/Tan(angle))
    Ay# = RoundDown(Py/64) * (64) + 64
    
    Bx# = RoundDown(Px/64) * (64) + 64
    Yb# = RoundDown(64*Tan(angle))
    Xb# = -64

    If angle# > 0 And angle# < 90 Then 
        Bx# = RoundDown(Px/64) * (64) - 1
        Yb# = RoundDown(-64*Tan(angle))
        Xb# = 64
    ElseIf angle# > 180 And angle# < 270 Then 
        Ya# = 64
        Xa# = RoundDown(-64/Tan(angle))
        Ay# = RoundDown(Py/64) * (64) - 1
    ElseIf angle# > 270 Then 
        Bx# = RoundDown(Px/64) * (64) - 1
        Yb# = RoundDown(-64*Tan(angle))
        Xb# = 64
        
        Ya# = 64
        Xa# = RoundDown(-64/Tan(angle))
        Ay# = RoundDown(Py/64) * (64) - 1
    EndIf 
    
    Ax# = px + (py-ay)/Tan(angle)
    By# = py + (px-bx)*Tan(angle)

    Color 255,128,0
    Circle -5+px,-5+py,10
    
    Cx# = Ax+Xa
    Cy# = Ay+Ya
    Bx# = Bx+Xb
    By# = By+Yb
    For i = 0 To 10
        Color cbgreen
        Box +27+RoundDown(Cx/64)*64,+27+RoundDown(Cy/64)*64,10,10
        Box +27+RoundDown(Bx/64)*64,+27+RoundDown(By/64)*64,10,10
        Circle -5+bx,-5+by,10
        Circle -5+cx,-5+cy,10
        Bx# = Bx+Xb
        By# = By+Yb
        Cx# = Cx+Xa
        Cy# = Cy+Ya
    Next i
DrawScreen
Forever 
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset

Post by skorpioni-cb »

Miten voi tehdä tyhjän kokonaislukumuuttujan? Kun pitäisi tehdä oma tutka-funktio.
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.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Kaikilla muuttujilla täytyy periaatteessa olla jokin arvo. Kokonaislukumuuttujilla se on oletuksena nolla. Ohjelma toimii sen mukaan, mitä arvoja muuttujilla on, eli varmistat vain, ettei koodi tee mitään kun arvo on nolla.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Locked