Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

cool-driver wrote:
phons wrote:SaveProgram tallentaa kaikki muuttujat, jos input on muuttujassa niin tallentaa, tosin vain sillä hetkellä olevan, ja jos ehdit sulkea sen en ole 100 varma jääkö muuttuja eloon vai suljetaanko se mukana. Ja sitten tuo eka: Luo tyyppi jossa on nuo kaikki, ja sitten vain määrät tietyn telakan joka voi tehdä niitä, esim. annat telakalle muutujan joka kertoo mitä rakenuksia se voi tehdä.
En osaa käyttää tyyppejä. :( Jonkun pitäisi opettaa. ;)
Esimerkit ja tutoriaalit, eka topikki.
Nasse-setä: Animaattori XD
Image
User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 5:48 pm

Re: Tyhmät kysymykset (II/2009)

Post by Substance »

anttimoi wrote:Onko kenelläkään funktiota jolla voisi piirtää umpinaisia kolmioita? Jos ei niin voisiko antaa vähän vinkkiä miten suunnilleen sellaisen toteuttaisi.
cbSDK:sta löytyy :)

Code: Select all

// Piirtää kolmion.
Function Triangle(x1,y1,x2,y2,x3,y3,fill=0) 'by atomimalli

    Line x1,y1,x2,y2
    Line x2,y2,x3,y3
    Line x3,y3,x1,y1

    If fill = True Then
        If y2<y1 Then 'jos p2 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y2
            y2=tmp
            
            tmp=x1
            x1=x2
            x2=tmp
        EndIf
        
        If y3<y1 Then 'jos p3 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y3
            y3=tmp
            
            tmp=x1
            x1=x3
            x3=tmp
        EndIf
        
        If y3<y2 Then 'jos p3 on ylempänä kuin p2 vaihdetaan niiden paikkaa
            tmp=y2
            y2=y3
            y3=tmp
            
            tmp=x2
            x2=x3
            x3=tmp
        EndIf
        
        'pisteet ovat nyt järjestyksessä
        'ylhäältä alas p1(x1,y1), p2(x2,y2), p3(x3,y3)
        dy1=y2-y1'pystysuora matka p1:sta p2:seen
        dx1=x2-x1'vaakasuora matka p1:sta p2:seen
        dy2=y3-y1'pystysuora matka p1:sta p3:meen
        dx2=x3-x1'vaakasuora matka p1:sta p3:meen
        
        If dy1 Then 'jos kolmion yläosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion yläosassa(p1-p2)
            For i = y1 To y2
                'lasketaan seuraava x-koordinaatti p1:stä p2:seen
                ax=x1+((i-y1)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
        
        dy1=y3-y2'pystysuora matka p2:sta p3:meen
        dx1=x3-x2'vaakasuora matka p2:sta p3:meen
        
        If dy1 Then 'jos kolmion alaosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion alaosassa(p2-p3)
            For i = y2 To y3
                'lasketaan seuraava x-koordinaatti p2:stä p3:meen
                ax=x2+((i-y2)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
    EndIf
EndFunction
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

anttimoi wrote:Onko kenelläkään funktiota jolla voisi piirtää umpinaisia kolmioita? Jos ei niin voisiko antaa vähän vinkkiä miten suunnilleen sellaisen toteuttaisi.
Tässäpä atomimallin Triangle() - funktio. Oleppa hyvä.

Code: Select all

Function Triangle(x1,y1,x2,y2,x3,y3,fill=0) 'by atomimalli

    Line x1,y1,x2,y2
    Line x2,y2,x3,y3
    Line x3,y3,x1,y1

    If fill = True Then
        If y2<y1 Then 'jos p2 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y2
            y2=tmp
            
            tmp=x1
            x1=x2
            x2=tmp
        EndIf
        
        If y3<y1 Then 'jos p3 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y3
            y3=tmp
            
            tmp=x1
            x1=x3
            x3=tmp
        EndIf
        
        If y3<y2 Then 'jos p3 on ylempänä kuin p2 vaihdetaan niiden paikkaa
            tmp=y2
            y2=y3
            y3=tmp
            
            tmp=x2
            x2=x3
            x3=tmp
        EndIf
        
        'pisteet ovat nyt järjestyksessä
        'ylhäältä alas p1(x1,y1), p2(x2,y2), p3(x3,y3)
        dy1=y2-y1'pystysuora matka p1:sta p2:seen
        dx1=x2-x1'vaakasuora matka p1:sta p2:seen
        dy2=y3-y1'pystysuora matka p1:sta p3:meen
        dx2=x3-x1'vaakasuora matka p1:sta p3:meen
        
        If dy1 Then 'jos kolmion yläosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion yläosassa(p1-p2)
            For i = y1 To y2
                'lasketaan seuraava x-koordinaatti p1:stä p2:seen
                ax=x1+((i-y1)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
        
        dy1=y3-y2'pystysuora matka p2:sta p3:meen
        dx1=x3-x2'vaakasuora matka p2:sta p3:meen
        
        If dy1 Then 'jos kolmion alaosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion alaosassa(p2-p3)
            For i = y2 To y3
                'lasketaan seuraava x-koordinaatti p2:stä p3:meen
                ax=x2+((i-y2)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
    EndIf
EndFunction
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Herra Siili »

Miten kartan voi maskata?
EDIT:

Löysin vastauksen itse.

a.k.a. Gehock
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

1. Siis miten saan tuon Inputin tallennettua muuttujaan? Eli, että se Input tallentuu Sve Program komennolla?
2. Eli siis ideani tuohon uudisrakennukseen:
- pelaaja valitsee tia sitten kirjoittaa kaikki matkustajat, hyttipaikat, autot jne.
- tämän jälkeen hän alkaa etsiä telakoilta tarjouksia, joita siis voisi olla vaikka viisi
- kaikki telakat eivät välttämättä tee tarjousta
- kun rakennussopimus on tehty, kestäisi vaikka kaksi vuotta, ennen kuin alus on valmis
- vesillelaskupäivänä alukselle pitäisi valita nimi kirjoittamalla se Inputtiin
- tilaus voisi myöhästyä, telakka voisi mennä konkurssiin, tilauksen hinta voisi nousta
- jos telakka vaikka menisi konkurssiin pitäisi päättää mitä tekee uudisrakennuksellaan, eli myykö pois, jatkaako rakentamista toisella telakalla ja jne.
3. Mistä löytäisi tuon ajan valuuttalursseja, että voisi luoda hintatason?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset (II/2009)

Post by vilQuri »

1.

Code: Select all

s$=input("Lol: ")
teksti$ = s$
saveprogram "lol.sav"
Enkä muuten kehota käyttämään tota SaveProgrammia mitenkään, kannattaa tehä oma tallennus...
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

miten tehdään semmonen ruutu liikkuminen? esimerkkiä?
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (II/2009)

Post by MaGetzUb »

Ehmm.. ruutuliikkuminen? Minkälaista tarkoitat?? (Mihin tarkoitukseen tulet käyttämään??)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Viltzu »

rami123 wrote:miten tehdään semmonen ruutu liikkuminen? esimerkkiä?
Jos ymmärsin oikein niin tarkoitat että liikkuu ruudulta toiselle? Eikä niin että voisi mennä ruutujen väliin
Yksinkertaisestihan sen voisi tehdä niin että ei liikuteta kohdetta pikseli pikseliltä vaan hypätään yli :D Esim. "X+50" ja "Y+50" :P
Jolloin yhden ruudun koko pitäisi olla 50x50 pikseliä.
EDIT:

Hmm... Tarkoitin vain liikkumista niin että ei jouduta ruutujen väliin. Ja piti myös mainita että tämä on vain näin yksinkertaisesti :roll:

Last edited by Viltzu on Tue Jun 23, 2009 9:29 am, edited 2 times in total.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (II/2009)

Post by MaGetzUb »

Viltzu wrote:
rami123 wrote:miten tehdään semmonen ruutu liikkuminen? esimerkkiä?
Jos ymmärsin oikein niin tarkoitat että liikkuu ruudulta toiselle? Eikä niin että voisi mennä ruutujen väliin
Yksinkertaisestihan sen voisi tehdä niin että ei liikuteta kohdetta pikseli pikseliltä vaan hypätään yli :D Esim. "X+50" ja "Y+50" :P
Jolloin yhden ruudun koko pitäisi olla 50x50 pikseliä.
Mutta silloinhan vain kohde sioitettaisiin 50 pikselin päähän omasta siainnistansa? :D
NextX = (MousewX()/32*32) <- tuolla tavalla voidaan tehdä ihan ruudutkin, ja siten objekti voidaan liikuttaa niitä kohti... ;)
Koodan esimerkin niin tajuatte.. :)
EDIT:

Tässä nyt jonkimmoone:

Code: Select all

Guy = LoadObject("Media\Guy.Bmp",72)
PositionObject Guy,-200+16,150-16

Repeat 

'Lasketaan hiiren siainnit ruutuina
bwx = (MouseWX()-16)/32*32
bwy = (MouseWY()+16)/32*32

'Piirretään maailmaan kaikki tarpeellinen
DrawToWorld ON
'Hiiri
Color cbgreen
Box bwx,bwy,32,32,0
'Piirretään kohdepaikan siainti
If Choosed Then 
Color cbred
Box targetx-16+1,targety+16-1,30,30,0
EndIf 
DrawToWorld OFF
Color cbcyan
Text 0,0,"Valitse paikka hiirellä"


'Paikan valinta
If MouseHit(1) Then
choosed = 1 'Aloitetaan ukon liikuttaminen 
targetx = bwx+16 '"keskitetään" laatikon siainnit
targety = bwy-16
EndIf 

'Jos ukon siainnit täsmäävät paikan kanssa niin lopetetaan liikuttaminen
If Distance(ObjectX(guy),ObjectY(guy),targetx+16,targety-16)<8 Then 
choosed = 0
EndIf 

'Jos paikka on valittu niin liikutetaan ukkoa. 
If choosed Then 
RotateObject guy,-GetAngle(ObjectX(guy),ObjectY(guy),targetx,targety)
MoveObject guy,2
EndIf 



DrawScreen
Forever 



[/edit]
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

vilQuri wrote:1.

Code: Select all

s$=input("Lol: ")
teksti$ = s$
saveprogram "lol.sav"
Enkä muuten kehota käyttämään tota SaveProgrammia mitenkään, kannattaa tehä oma tallennus...
No miten sen tallenuksen sitten voi tehdä muilla tavoilla?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

cool-driver wrote: 2. Eli siis ideani tuohon uudisrakennukseen:
- pelaaja valitsee tia sitten kirjoittaa kaikki matkustajat, hyttipaikat, autot jne.
- tämän jälkeen hän alkaa etsiä telakoilta tarjouksia, joita siis voisi olla vaikka viisi
- kaikki telakat eivät välttämättä tee tarjousta
- kun rakennussopimus on tehty, kestäisi vaikka kaksi vuotta, ennen kuin alus on valmis
- vesillelaskupäivänä alukselle pitäisi valita nimi kirjoittamalla se Inputtiin
- tilaus voisi myöhästyä, telakka voisi mennä konkurssiin, tilauksen hinta voisi nousta
- jos telakka vaikka menisi konkurssiin pitäisi päättää mitä tekee uudisrakennuksellaan, eli myykö pois, jatkaako rakentamista toisella telakalla ja jne.
3. Mistä löytäisi tuon ajan valuuttakursseja, eli 1950-, 1960-, 1970-, 1980- ja 1990-luvun, että voisi luoda hintatason?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Viltzu »

cool-driver wrote:
vilQuri wrote:1.

Code: Select all

s$=input("Lol: ")
teksti$ = s$
saveprogram "lol.sav"
Enkä muuten kehota käyttämään tota SaveProgrammia mitenkään, kannattaa tehä oma tallennus...
No miten sen tallenuksen sitten voi tehdä muilla tavoilla?
Katsoppas manuaalista komentoja OpenToWrite ja OpenToRead.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Joo, kiitoksia tuosta ruutu liikkumisen opettamisesta :) oliko se oikeasti noin helppoa.. :roll:
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Tuxi »

Tarvitsisin mahdollisimman nopean reitinetsintäalgoritmin. Antakaa edes vinkki, mistä pitäs lähtä toteuttamaan.
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
Phons as guest

Re: Tyhmät kysymykset (II/2009)

Post by Phons as guest »

Aavesoturi teki tuollaisen, pistäppä vaikka hakuun A*-algoritmi.
EN ole ihan varma jos ei löydy niin käy läpi esimerkti ja tutoriaalit, kyllä jossain pitisi sellainen olla..
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Tuxi »

Testasin tuota. Muuten hyvä, mutta aivan liian hidas varsinkin pitkillä matkoilla. Pitäis olla nopeampi.
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by otto90x »

Tuxi wrote:Testasin tuota. Muuten hyvä, mutta aivan liian hidas varsinkin pitkillä matkoilla. Pitäis olla nopeampi.
Millaiseen tarkoitukseen tuo tulee? Voisiko reittejä tai ainakin osan niistä laskea valmiiksi? Voiko ohjelmassa vähentää reitinetsinnän tarvetta ja korvata se jollain vähemmän resursseja vievällä keinolla?
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Tuxi »

Tulee sellaiseen isometriseen strategiapeliin. Vihujen pitää osata kiertää vesistöt, metsät ja muut esteet.
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by otto90x »

Tarkkuutta pienentämällä saa lisää nopeutta. Piirsin kuvan jonka avulla koitan havainnollistaa asiaa. Oletetaan että pelaaja haluaa päästä oranssista pisteestä (tai sen lähistöltä) valkoisen pisteen luo. Silmämääräisesti on kaksi reittiä jota voimme kulkea (violetti ja tummanharmaa).

Mikäli kartta on valtavan kokoinen, emme voi rajallisen suorituskyvyn puitteissa laskea reittiä pikselitarkasti. Siispä jaamme kartan alueisiin. Jokainen ympyrä kartassa kuvastaa aluetta, mustat ovat alueita johon ei ole tarkoitus päästä. Kun käytämme reitinetsintää suuremmille alueille, saamme nopeamman tarkistuksen, vaikkakin reitistä tulee vähän karkeampi. Vaaleanpunainen ja vaaleanharmaa reitti näyttävät näitä kahta vaihtoehtoa.

Reittiä ei kuitenkaan tarvitse jättää näin karkeaksi vaan voimme esimerkiksi laskea etukäteen kartan pisteille reittejä muutamaan lähimpään pisteeseen. Ja käyttää näitä siirtymäpisteinä mikäli mahdollista. Tällöin ehkä saisimme valkoisen ja punaisen kaltaisia reittejä, mahdollisesti myös parempia. Kannattaa myös huomioida että joukkojen liikkeellä voi pehmentää teräviä kulmia reiteissä ja tehdä niistä lyhyempiä ja luonnollisemman näköisiä.
Attachments
astar.png
astar.png (24.75 KiB) Viewed 11482 times
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Locked