Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
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 »

koppanen wrote:ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?
Mitä tarkoitat, "lähellä"? Camerafollowia vai kenties sitä, että hahmo olisi suurempi näytöllä?
Kerosiinipelle

Re: Tyhmät kysymykset

Post by Kerosiinipelle »

Tarkennan kysymystäni. Siis: Miten saa objectsoverlapin ja tälläiset toimimaan typeillä tehtyjen vihujen kanssa? Jos laitan ObjectsOverlap(vihu\obj,jack,3) MAVaa.
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 »

Kerosiinipelle wrote:Tarkennan kysymystäni. Siis: Miten saa objectsoverlapin ja tälläiset toimimaan typeillä tehtyjen vihujen kanssa? Jos laitan ObjectsOverlap(vihu\obj,jack,3) MAVaa.
Poistatko vihu\obj:n törmäyksen sattuessa? Silloin sinun pitää muistaa, ettei deletoitua objektia voi käytttää enää mitenkään. Ja onhan sinulla jack -niminen objekti? Kannattanee lähettää vähän enemmän koodia kuin yksi funkkarikutsu parametreineen, kyllähän Moveobject ukko, 1:kin mavaa, jos ukkoa ei ole. Vähän sitä koodia siis, mieluiten vaikka vihujen läpikäyntisilmukka.
Kerosiinipelle

Re: Tyhmät kysymykset

Post by Kerosiinipelle »

No, tässä on koodi.
Ja tässä on ongelma: Mavaa, jos koodiin merkittyyn kohtaan laittaa iffiä.

Code: Select all


SCREEN 1024,768,0,0
SetWindow "Peli", 3, "Are you sure you want to quit?"
Goto Valikko


Valikko:

Goto Level1

Level1:

Type AMMUS
    Field obj
End Type 

Type VIHUT 'vihut
    Field enemy1
End Type

FrameLimit 30  'rajoita nopeutta
DrawToWorld ON 'mahdollistaa piirtämisen maailmaan

'lataa kartta
kartta = LoadMap("media\cdm2.til","media\tileset.bmp")
ObjectPickable kartta, ON 'aseta se poimittavaksi
PlayObject kartta,0,0,1 'animoi kartta

'lataa pelaaja
jack = LoadObject ("media\guy.bmp",72)

ObjectPickable jack, 2 'aseta se poimittavaksi

pati=LoadObject("media\bullet.bmp")
ShowObject pati,OFF

Kohde = LoadObject ("media\car2.bmp")
PositionObject kohde,-53,0
          
enemy=LoadObject("media\guy.bmp",72)
PositionObject enemy, 600,200
ShowObject enemy,OFF

'----------------------


SetupCollision jack, kartta, 1, 4, 2
SetupCollision enemy, kartta, 1, 4, 2



Repeat

'---------------------------


    'Ukon ohjaus
    If KeyDown(cbKeyA) Then TurnObject jack,5
    If KeyDown(cbKeyD) Then TurnObject jack,-5
    If KeyDown(cbKeyW) Then MoveObject jack,2
    If KeyDown(cbKeyS) Then MoveObject jack,-1.6
    If KeyDown(cbKeyQ) Then MoveObject jack,0,-2
    If KeyDown(cbKeyE) Then MoveObject jack,0,2
    
    UpdateGame
    
CloneCameraPosition jack

UpdateGame    
    
    DrawGame
DrawToWorld ON    
    '--------------------------

  
        If KeyDown(cbKeyF) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,jack               
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,jack           
        reload=0 'aseen lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) <> 0 Then
            DeleteObject luoti\obj
            Delete luoti
            EndIf

   'TÄHÄN LUOTEIHIN LIITTYVÄ IF-HOMMA NIIN MAVAA,
   'esimerkiksi (poista heittomerkit)
   'If ObjectsOverlap (luoti\obj,kohde,3) Then
   'DeleteObject luoti\obj
   'Delete luoti
   'EndIf
   

    Next luoti

    
    '----------------------

Vihollinen.VIHUT = New(VIHUT)       
Vihollinen\enemy1=CloneObject(enemy) 
PositionObject Vihollinen\enemy1,100,623



    DrawScreen 'piirrä näyttö

Forever

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 »

Kerosiinipelle wrote:No, tässä on koodi.
Ja tässä on ongelma: Mavaa, jos koodiin merkittyyn kohtaan laittaa iffiä.
Ongelma on se että poistat ensin luodin ja sitten vielä katsot onko se poistettu luoti kohteen päällä, tämän takia se antaa virheilmoituksen. Kokeile seuraavaa:

Code: Select all

If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) <> 0 or  ObjectsOverlap (luoti\obj,kohde,3) Then
    DeleteObject luoti\obj
    Delete luoti
EndIf
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Kerosiinipelle

Re: Tyhmät kysymykset

Post by Kerosiinipelle »

Okei... mutta miten tuohon lisätään kohteen healthinmenetys niin että se ei menetä enua jos luoti osuu seinään?
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 »

Kerosiinipelle wrote:Okei... mutta miten tuohon lisätään kohteen healthinmenetys niin että se ei menetä enua jos luoti osuu seinään?
No esimerkiksi näin:

Code: Select all

if *törmäys seinään* then
    *poista luoti*
elseif *törmäys ukkoon* then
   *poista luoti*
   *vähennä hp*
endif
Ja tämä sitten ei ole oikeaa koodia vaan pistät noiden tähdellä merkattujen tilalle sen koodin mitä käytät kyseiseen toimintoon.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Zrazy_Coder
Member
Posts: 60
Joined: Sun Sep 09, 2007 8:46 pm

Re: Tyhmät kysymykset

Post by Zrazy_Coder »

Tämä kysymys ei kyllä mitenkään koske koodissa tapamaani virhettä tai sellasta. Eli mun rpg on muuten aika pitkällä , mutta grafiikat no ne on vähä sellaset "Onko toi lehmä vai kana" ?. Eli mistäköhän sais ilmaseks grafiikkaa ? Enkä viitti mitää grafiikko ottaa mun projektiin kun en oo yhtää varma tuleeko siitä koskaa valmis. Eli tietääks kukaa mistä saisi ilmaseks ylhäältäpäin kuvattuja tilesettejä kuvia ihmisiä petoja jne.
Guest

Re: Tyhmät kysymykset

Post by Guest »

Miten saisin tekstipeliini "skriptin", jolla saa arvottua että: Meneekö ruutuun1 vai 2?
Or ei ainakaan auta Elsellä olen kokeillut myös, mutta aina se menee ruutu1:een.
Helpejä olen yrittänyt katsoa, mutta en ole tällaiseen ongelmaan ratkaisua löytänyt tai sitten olen vain niin noob etten ole löytänyt.
Jos tuo koodi on huonoa (niinkuin se varmaan onkin) voi toki neuvoa parempi tapa miten kannattaa tehdä.

Code: Select all

alku:

ClearKeys

Repeat
Text 10,10, "Tervetuloa pelaamaan tekstipeliä"
VerticalText 375,50, "Valikko"

Text 10,50, "1.Mene kauppaan"
Text 10,60, "2.Mene kotiin"
Text 10,70, "3.Arvonta"

If KeyHit (cbkey1) Then Goto ruutu1
If KeyHit (cbkey2) Then Goto ruutu2
If KeyHit (cbkey3) Then Goto ruutu1 Or ruutu2

DrawScreen
Until EscapeKey()

ruutu1:

ClearKeys

Repeat
Text 10,10, "Tulit kauppaan"

DrawScreen
Until EscapeKey()

ruutu2:

ClearKeys

Repeat
Color cbYellow
Text 10,10, "Tulit kotiin"

DrawScreen
Until EscapeKey()
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Käyttämällä Rand()-funktiota, joka palauttaa sattumanvaraisen luvun.

Code: Select all

randomi = rand(0,1)
If keyhit(cbkeyspace) and randomi = 1 then goto ruutu3
Tai tiiviimmin:

Code: Select all

If KeyHit(cbkeyspace) and rand(1) then goto ruudu3
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Guest

Re: Tyhmät kysymykset

Post by Guest »

Kiitos Harakka avusta nyt sain pelittämään ;)
vieras

Re: Tyhmät kysymykset

Post by vieras »

Eli yritän tässä väsätä jonkinmoista hahmonluontisysteemiä kokeilu- ja harjoittelumielessä. Ongelmana on vain se, että nykyisessä muodossaan systeemi ei "tallenna" hahmo-tyypin fieldejä vaan unohtaa ne aina seuraavaan vaiheeseen siirryttäessä. Apua kaipaan ongelman ratkaisussa ja ehdotukset mahdollisesta yksinkertaisemmasta systeemistä otan mielelläni vastaan. ;)

Code: Select all

SCREEN 640,480
FrameLimit 40

courier=LoadFont("courier new",40) 'ladataan fontit
courier1=LoadFont("courier new",16)
courier2=LoadFont("courier new",24)

Type hahmo 'määritetään tyypit
    Field gender$
    Field race$ 
    Field weapons$
    Field magic$
    Field name$
End Type

Global moodi 'määritetään muuttujat globaaleiksi
Global hahmomoodi
Global valinta
Global hahmo

Repeat 'pääsilmukka alkaa

    //HAHMONLUONTI:
    
    PELAAJA_yleis.hahmo = New(hahmo)
    
    moodi=10
    
    If moodi=10 And hahmomoodi=0 Then 'SUKUPUOLI
        Color 96,127,13
        Box 80,60,480,360,1
        Color 192,0,0
        Box 79,59,482,362,0
        Box 430,70,120,340,0
        SetFont courier2
        hl_loota(90,70,"Gender","-choose the gender of thine character-",1,0)
        hl_loota1(90,110,"Race")
        hl_loota1(90,150,"Abilities")
        hl_loota1(90,190,"Weapons")
        hl_loota1(90,230,"Magic")
        hl_loota1(90,270,"Name")
        ElseIf hahmomoodi=1 Then 'VALINTA
            Color 96,127,13
            Box 160,120,320,240,1
            Color 192,0,0
            Box 158,118,324,244,0
            SetFont courier2
            hl_loota(200,150,"Male","-continue-",2,1)
            hl_loota(330,150,"Female","-continue-",2,2)
            If valinta=1 Then 
                PELAAJA_yleis\gender$ = "Male"
                ElseIf valinta=2 Then
                    PELAAJA_yleis\gender$ = "Female"
            EndIf
        ElseIf hahmomoodi=2 Then 'ROTU
            Color 96,127,13
            Box 80,60,480,360,1
            Color cbwhite
            SetFont courier1
            Text 433,73,"Gender: "+ PELAAJA_yleis\gender$
            Color 192,0,0
            Box 79,59,482,362,0
            Box 430,70,120,340,0
            SetFont courier2
            hl_loota1(90,70,"Gender")
            hl_loota(90,110,"Race","-choose the race of thine character-",3,0)
            hl_loota1(90,150,"Abilities")
            hl_loota1(90,190,"Weapons")
            hl_loota1(90,230,"Magic")
            hl_loota1(90,270,"Name")
        ElseIf hahmomoodi=3 Then 'VALINTA
            Color 96,127,13
            Box 160,120,320,240,1
            Color 192,0,0
            Box 158,118,324,244,0
            SetFont courier2
            hl_loota(200,150,"Human","-continue-",4,3)
            hl_loota(330,150,"Elf","-continue-",4,4) 
            hl_loota(200,190,"Dwarf","-continue-",4,5)
            hl_loota(330,190,"Halfling","-continue-",4,6)             
            hl_loota(265,230,"Half-Orc","-continue-",4,7)
            If valinta=3 Then 
                PELAAJA_yleis\race$="Human"
                ElseIf valinta=4 Then
                    PELAAJA_yleis\race$="Elf"
                ElseIf valinta=5 Then
                    PELAAJA_yleis\race$="Dwarf"
                ElseIf valinta=6 Then
                    PELAAJA_yleis\race$="Halfling"
                ElseIf valinta=7 Then
                    PELAAJA_yleis\race$="Half-Orc"  
            EndIf   
        ElseIf hahmomoodi=4 Then 'OMINAISUUDET
            Color 96,127,13
            Box 80,60,480,360,1
            Color cbwhite
            SetFont courier1
            Text 433,73,"Gender: "+ PELAAJA_yleis\gender$ +" "
            Text 433,88,"Race: "+ PELAAJA_yleis\race$ +" "          
            Color 192,0,0
            Box 79,59,482,362,0
            Box 430,70,120,340,0
            SetFont courier2
            hl_loota1(90,70,"Gender")
            hl_loota1(90,110,"Race")
            hl_loota(90,150,"Abilities","-choose the abilities of thine character-",5,0)
            hl_loota1(90,190,"Weapons")
            hl_loota1(90,230,"Magic")
            hl_loota1(90,270,"Name")
    EndIf
    
    DrawScreen 'piirretään kaikki

Forever 'pyöritetään ikuisesti

'---------------------

//hahmonluontilootafunktio AUKI
Function hl_loota(x,y,txt$,info$,z,a)
    Color cbred
    Box x,y,120,35,0
    Color cbwhite
    CenterText x+60,y+6,txt$
    Color cbyellow
    If MouseX()>=x And MouseX()<=x+120 And MouseY()>=y And MouseY()<=y+35 Then
        Box x+2,y+2,114,31,0
        CenterText 320,440,info$
            If MouseHit(1) Then
                valinta=a
                hahmomoodi=z
            EndIf
    EndIf  
End Function

//hahmonluontilootafunktio VARATTU
Function hl_loota1(x,y,txt$)
    Color cbsilver
    Box x,y,120,35,1
    Color cbdark
    CenterText x+60,y+6,txt$
    Color cbred
    If MouseX()>=x And MouseX()<=x+120 And MouseY()>=y And MouseY()<=y+35 Then
        Box x+2,y+2,114,31,0
    EndIf  
End Function
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

Tuossa on vikana se, että lisäät typeen pääsilmukan sisällä aina uuden jäsenen (ja se näyttää aina uusimman jäsenen tietoja sivulla).

Code: Select all

PELAAJA_yleis.hahmo = New(hahmo)
Siirrä tuo silmukan ulkopuolelle tai tee viritelmä jolla uusi hahmo luodaan vain kun tarvitaan.
CoolBasic henkilökuntaa
Kehittäjä
vieras

Re: Tyhmät kysymykset

Post by vieras »

TheFish wrote:Tuossa on vikana se, että lisäät typeen pääsilmukan sisällä aina uuden jäsenen (ja se näyttää aina uusimman jäsenen tietoja sivulla).

Code: Select all

PELAAJA_yleis.hahmo = New(hahmo)
Siirrä tuo silmukan ulkopuolelle tai tee viritelmä jolla uusi hahmo luodaan vain kun tarvitaan.
Näimpä! Kiitän! :P
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset

Post by vilQuri »

Miten saan ladattu peliini Jonkun fontin, ilman että sitä on asennettu mihinkään Fonts kansioon. Tai onkos se edes mahdollista.
:?: :shock:
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Ei onnistu. Coolbasic osaa käyttää vain windowsin fonttikansiossa olevia fontteja.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset

Post by vilQuri »

Kiitti pitää kai järkätä joku install homma
koppanen
Newcomer
Posts: 7
Joined: Tue Aug 28, 2007 4:59 pm

Re: Tyhmät kysymykset

Post by koppanen »

koodaaja wrote:
koppanen wrote:ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?
Mitä tarkoitat, "lähellä"? Camerafollowia vai kenties sitä, että hahmo olisi suurempi näytöllä?
siis tarkotan et se ukkoo katotais "ylempää" niin et kartaa näkyis enemmän... ja tieety se ukkoki ois pienenpi.. mahollist?

no mut onks sit mahollist muuttaa tilen kokoa lennos..? eli jos normaalist on 32*32 nii et muuttais sen vaik 16*16 ?
EDIT: joo unohtakaa xD too complicated to me xD
Last edited by koppanen on Wed Sep 12, 2007 6:23 pm, edited 2 times in total.
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Tyhmät kysymykset

Post by CCE »

Ei ole, tälläistä kartan skaalausta ei ole tällä hetkellä tuettuna CoolBasicissa.

Ellet sitten koodaa karttamoottoriasi itse ;)
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Tyhmät kysymykset

Post by Astigma »

koppanen wrote:no mut onks sit mahollist muuttaa tilen kokoa lennos..? eli jos normaalist on 32*32 nii et muuttais sen vaik 16*16 ?
On. Peliä ladatessa teet tilesetistäsi pienennoksen (tai suurennoksen) ResizeImage-komennolla. Tämän jälkeen lataat taulukkoon kaikkien kartan kerroksien tiedot. Tämän jälkeen sinulla on kaikki avaimet miltei reaaliaikaiseen tilekartan "zoomaukseen". Kun haluat muuttaa tilen kokoa, luot uuden tyhjän tilekartan, johon liität aiemmin pienennetyn tilesetin ja datan saat taulukosta. Tämä ei vie paljoa suoritusaikaa. Jos haluat palata takaisin suurempaan tilekokoon, yksinkertaisesti luot taas uuden tyhjän tilekartan ja teet saman homman, mutta käytät normaalikokoista tilesettiä. Tietysti muistat poistaa joka välissä vanhan tilekartan muistia viemästä.

Tällä tavoin on toteutettu myös A Stigmatorin zoomaustoiminto.
Locked