Page 8 of 50

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 3:28 pm
by MaGetzUb
Koitappas tätä :) :

Code: Select all


//Vihut Tyyppikokoelma, sisältää objektimuuttujan ja latausaika-muuttujan. 
Type Vihut
    Field obj                'Itse objekti
    Field reload            'Vihollisen latausaika
End Type 

//Ammus tyyppikokoelma, sisältää lentävän luodin objektimuuttujan.
Type AMMUS
    Field obj                
End Type 


SCREEN 800, 600


imglife = LoadImage("Media\life.jpg") //Ladataan energiapalkki kuva, joka merkitsee pelaajan energiamäärää.
Global ukko //Tehdään allaolevasta ukosta "globaali" eli tämä sama muuttuja näkyy jokapuolella koodia, myös 
            //repeat-silmukan alapuolella.
ukko=LoadObject("Media\soldier.bmp",72)
ObjectFloat ukko, 120 'Asetetaan pelaajalle energia

vihu = LoadObject("Media\soldier.BMP", 72) 

Global pati //Laitetaan panos näkymään kaikkialla.
pati=LoadObject("Media\bullet.bmp")

ShowObject pati,OFF
ShowObject vihu, OFF



//Luodaan viholliset, tehdään niitä 10
For i = 0 To 10
    pahis.Vihut = New(Vihut)
    pahis\obj = CloneObject(Vihu)
    SetupCollision pahis\obj, ukko, 2, 2, 2 //Viholliset törmäävät pelaajaan.
    PositionObject pahis\obj,Rand(-400, 400), Rand(-300, 300) //Sijoitetaan viholliset satunnaisiin kohtiin ruudulla.
    ObjectFloat pahis\obj, 100 'Asetetaan pahikselle energia
Next i
aloitsuaika = Timer()

//Viholliset törmäävät nyt toisiinsa.
For pahis.Vihut = Each Vihut
    For pahis2.Vihut = Each Vihut
        If pahis <> pahis2 Then SetupCollision pahis\obj, pahis2\obj, 2, 2,2
    Next pahis2
Next pahis

Repeat
    ClearText 
    currentTime = (Timer() - aloitsuaika)/1000 //Tehdään muuttuja, josta lasketaan 
                                               //aloitusaikamuuttujan ja nykyisen ajan välinen erotus.
    AddText "Aikaa mennyt: "+currentTime       //Kirjoitetaan ruutuun tarvittavat tekstit
    AddText "Nuolista ohjaa, CTRL=ampuu"

    //Ukon liikutus..
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,3.5
    If DownKey() Then MoveObject ukko,-2.45    
    //Painetaan oikeaa kontrollia, niin käytetään itse tekemää "komentoa" ts. funktiota nimeltään ObjAmmu
    If KeyDown(cbKeyRControl) And reload=0 Then    
        ObjAmmu(ukko)
        reload=5       
    EndIf
    
    If reload>0 Then reload=reload-1

    DrawGame

    //Kun käydään viholliset lävitse lasketaan samalla niiden määrä
    Vihollisia = 0 //Asetetaan vihollisten määrä aina aluksi nollaan
    //Vihollisten läpikäynti 
    For pahis.Vihut = Each Vihut
        //Piirretään pahikselle energia
        Vihollisia = Vihollisia + 1 //Nyt lisätään Vihollisia-muuttujaan niin montakertaa 1, kuin vihollisia on.
        DrawToWorld 0, 0, ON  
            CenterText ObjectX(pahis\obj), ObjectY(pahis\obj), ObjectFloat(pahis\obj), 2
        DrawToWorld 0, 0, OFF 
        
        //Käännetään vihollinen osoittamaan pelaajaa kohti.
        PointObject pahis\obj, ukko
        
        //Jos etäisyys vihollisen ja pelaajan välillä on liian suuri, liikutetaan vihollista pelaajaa kohti.
        If Distance2(pahis\obj, ukko) > 120 Then 
            MoveObject pahis\obj, 0.6
        Else
            //Muuten jos etäisyys pelaajan ja vihollisen välillä on tarpeeksi vähän niin vihollinen avaa tulen.
            If pahis\reload = 0 Then 
                ObjAmmu(pahis\obj)
                pahis\reload = 45
            EndIf 
            
            If pahis\reload > 0 Then pahis\reload = pahis\reload - 1
        EndIf 
        //Joe vihollisen energia-arvo on tasan tai meni alle nollan, niin tuhotaan vihollinen.
        If ObjectFloat(pahis\obj) =< 0 Then 
            DeleteObject pahis\obj
            Delete pahis
        EndIf
    Next Pahis
    

    ukonenergia = ObjectFloat(ukko)
    DrawImageBox imglife, 0, 540, 0, 0, Float(ImageWidth(imglife))/(120.0)*ukonenergia, 20
    
    If Vihollisia = 0 Then MakeError "Voitit! Tapoit kaikki viholliset! Aikaa meni: "+currentTime+"s"
    If ObjectFloat(ukko) =< 0 Then MakeError "Kuolit! Selvisit: "+currentTime+"s"

    Gosub Sub_PäivitäPanokset

    DrawScreen
Until EscapeKey()

//Tässä Tehdään oma komento. Kaikki aloittelijat eivät vielä tunne tätä koodiosaa. 
//Tätä komentoa käytetään esim rivillä 64. :)
Function ObjAmmu(ampuja)
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        CloneObjectPosition luoti\obj,ampuja                
        CloneObjectOrientation luoti\obj,ampuja  
        
        //Jos ampuja on eri objekti, kuin pelaaja laitetaan panos törmäämään pelaaja-objektiin.
        If ampuja <> ukko Then SetupCollision luoti\obj, ukko, 2, 2, 2 
      
        For pahis.Vihut = Each Vihut
           If pahis\obj <> ampuja Then SetupCollision luoti\obj, pahis\obj, 2, 2, 2
           //Jos yksi vihuista ampuu,
           //Ei anneta tälle viholliselle ja panokselle törmäystunnistusta
        Next pahis
EndFunction 

Sub_PäivitäPanokset:
    //Panosten peruspäivitys
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If CountCollisions(luoti\obj) Then 'Johonkin törmättiin, sen täytyi olla vihollinen, tai pelaaja.. 
            törmättyobjekti = GetCollision(luoti\obj, 1) 'Tämä komento ON todella kätevä, tällä saadaan
                                                         'objektin kahva (englanniksi handle), kahva on muuttujan nimi
                                                         'eli ukko(<- tämä) = LoadObject("ukko.png"). Kahva on oikeasti vain viittaus
                                                         'tietokoneen muistiosoitteeseen, jossa se data on. Eli "ukko" ei ole kuvatiedosto.
                                                         'Vaan se osoittaa sijainnin, missä kuvatiedoston data on. (Kuvadatakin on monien sokkeloiden päässä vasta)
            energia# = ObjectFloat(törmättyobjekti) 'Tutkitaan törmätyn objektin energia-arvo ja otetaan muuttuja (energia# <-) talteen.
            uusienergia# = energia# - 10 '"tehdään" uusi energia-arvo, eli energia muuttujasta vähennetään kymmenen.
            ObjectFloat törmättyobjekti, uusienergia 'Asetetaan törmätylle objektille uusi energia-arvo.
            DeleteObject luoti\obj
            Delete luoti
            //Jos ei törmätty mihinkään, ja luoti jatkoi ruudun ulkopuolelle niin... tuhotaan se.
        ElseIf ObjectX(luoti\obj)<-400 Or ObjectX(luoti\obj)>400 Or ObjectY(luoti\obj)<-300 Or ObjectY(luoti\obj)>300 Then     
            DeleteObject luoti\obj
            Delete luoti
        EndIf        
    Next luoti   
Return 

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Mar 10, 2011 3:52 pm
by Bajamaja
Parin tunnin evotuksen ja useiden yritysten jälkeen totesin etten osaa tehdä pisteytyssysteemiä peliini...

koodi on tässä:

Code: Select all

Type TATIT
 Field tat
End Type


Type AMMUS
  Field obj
End Type


FrameLimit 40

SCREEN 1000,900

Slurp = LoadSound ("Media\Slurppaus.wav")

Musa = PlaySound ("Media\EpicFail.mp3")

hero = LoadObject ("Media\Hero1.bmp",360)

lol = LoadObject ("Media\Ammus.bmp",360)

ampu = LoadSound ("Media\ampu.wav")

tatti = LoadObject ("Media\Tatti.bmp",360)

tohveli = LoadObject ("Media\Tohveli.bmp",360)

keskitohveli = LoadObject ("Media\Tohveli2.png",360)

PositionObject tohveli, 1010, 30




Repeat



 GhostObject keskitohveli,1
 ShowObject lol,OFF
 ShowObject tatti,OFF









 PointObject tohveli,keskitohveli
 
 
 MoveObject tohveli,0,10




Gosub Musiikki
  Gosub Liiku
Gosub Tatteilu
 Gosub Ammu
  











 DrawScreen
 
Forever






End


 
  
Liiku:

  
 If KeyDown (cbkeyW) Then MoveObject hero,5
 If KeyDown (cbkeyS) Then MoveObject hero,-4
 If KeyDown (cbkeyD) Then TurnObject hero,-6
 If KeyDown (cbkeyA) Then TurnObject hero,6
Return 

Tatteilu:



If Odotus=0 Then 
 ok.TATIT = New (TATIT)
ok\tat=CloneObject (tatti)

 CloneObjectPosition ok\tat,tohveli


PlaySound Slurp

Odotus = 100



EndIf


 If Odotus>0 Then Odotus=Odotus-1
 For ok.TATIT = Each TATIT
 


 If ObjectsOverlap (hero,ok\tat,2) Then
Gosub Fail
  EndIf

PointObject ok\tat,hero

MoveObject ok\tat,3




 For pum.AMMUS = Each AMMUS




If ObjectsOverlap (pum\obj,ok\tat,2) Then
 Gosub osuma
Exit 

EndIf



 Next pum
Next ok


Return


auts:
 
 DeleteObject ok\tat
 Delete ok
Return



Ammu:

 If KeyDown (cbkeyRcontrol) And reload=0 Then 
pum.AMMUS = New (AMMUS)
pum\obj=CloneObject (lol)
 
 CloneObjectPosition pum\obj,hero
 CloneObjectOrientation pum\obj,hero
 TurnObject pum\obj, Rand(-4,4)

PlaySound ampu 
 
reload=5
EndIf 

If reload>0 Then reload=reload-1



For pum.AMMUS = Each AMMUS



 MoveObject pum\obj,30
 If ObjectX (pum\obj)<-1000 Or ObjectX (pum\obj)>1000 Or ObjectY (pum\obj)<-1000 Or ObjectY (pum\obj)>1000
DeleteObject pum\obj
Delete pum

EndIf



Next pum
 
 
 Return 
 
 



Musiikki:

 If SoundPlaying(Musa)=0 Then
 Musa = PlaySound ("Media\EpicFail.mp3")


EndIf 





Return

  Osuma:

Pisteet = Pisteet + 1
  DeleteObject pum\obj
  DeleteObject ok\tat
  Delete pum
 Delete ok

 

Return







FAIL:
 
 StopSound Musa
 DeleteSound Musa
 

 
 ClearObjects
 
Color cbRed
Text 200, 200, "FAILED!! Kuolit noob!"
DrawScreen

 Wait 5000
End

Aiemmin samasta rojektista laittanut koodin, tämä ei siitä paljonkaan eroa..

Kiitos jo etukäteen, jos joku viitsii auttaa. ^^

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Mar 10, 2011 4:17 pm
by Jonez
Suosittelen jättämään turhat sata väliä jokaisen komennon välistä, ja sisentämään. Korjasin pääsilmukkasi sellaiseksi miltä sen pitäisi näyttää:

Code: Select all

Repeat
    PointObject tohveli,keskitohveli
    MoveObject tohveli,0,10

    Gosub Musiikki
    Gosub Liiku
    Gosub Tatteilu
    Gosub Ammu
    
    DrawScreen
Forever
Luulen että ihmiset auttaisivat herkemmin jos saisivat enemmän selvää koodistasi. Emme kuitenkaan voi testata peliäsi koska meillä ei ole tarvittavaa mediaa.

Mutta asiaan. Mitä tarkoitat ettet saa pisteytyssysteemiä toimimaan? Kaiken järjen mukaan muuttujan "pisteet" pitäisi kasvaa yhdellä, kun ammus osuu tattiin. Selitä tarkemmin mikä on ongelmasi.

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Mar 10, 2011 9:28 pm
by Bajamaja
Jostain syystä ei muuttuja "pisteet" ole kasvanut mihinkään suuntaan vaikka olen yrittänyt laittaa sen nousemaan ammuksen osuessa tattiin... Samankaltainen ongelma on tullut kun olen yrittänyt saada HPta ukolle, ja parhaimillaan sain sen laskemaan sadasta kahdeksaankymmeneen kun tatti osuu ukkoon, mutta heti kun tatti ei enään ole ukon luona, se nousee takaisin sataan..

Tällä hetkellä olen poistanut molemmat muuttujat koodista..

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Mar 10, 2011 11:00 pm
by Jonez
Lisääppä tuohon viimeksi postaamaasi koodiin riville 75:

Code: Select all

Text 20, 20, pisteet
Lyön satasesta vetoa että pisteet toimivat. Eli kun ammut vihollisen, pisteet lisääntyvät yhdellä.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 11, 2011 8:39 am
by Wingman
Bajamaja wrote:Jostain syystä ei muuttuja "pisteet" ole kasvanut mihinkään suuntaan vaikka olen yrittänyt laittaa sen nousemaan ammuksen osuessa tattiin... Samankaltainen ongelma on tullut kun olen yrittänyt saada HPta ukolle, ja parhaimillaan sain sen laskemaan sadasta kahdeksaankymmeneen kun tatti osuu ukkoon, mutta heti kun tatti ei enään ole ukon luona, se nousee takaisin sataan..

Tällä hetkellä olen poistanut molemmat muuttujat koodista..
arvaan, että pääloopissasi oli rivit 'pisteet=0' ja 'elämät=100'. Siirtämällä ne loopin ulkopuolelle, sen pitäisi toimia

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 11, 2011 2:47 pm
by Bajamaja
Jonez wrote:Lisääppä tuohon viimeksi postaamaasi koodiin riville 75:

Code: Select all

Text 20, 20, pisteet
Lyön satasesta vetoa että pisteet toimivat. Eli kun ammut vihollisen, pisteet lisääntyvät yhdellä.
Wingman wrote:
Bajamaja wrote:Jostain syystä ei muuttuja "pisteet" ole kasvanut mihinkään suuntaan vaikka olen yrittänyt laittaa sen nousemaan ammuksen osuessa tattiin... Samankaltainen ongelma on tullut kun olen yrittänyt saada HPta ukolle, ja parhaimillaan sain sen laskemaan sadasta kahdeksaankymmeneen kun tatti osuu ukkoon, mutta heti kun tatti ei enään ole ukon luona, se nousee takaisin sataan..

Tällä hetkellä olen poistanut molemmat muuttujat koodista..
arvaan, että pääloopissasi oli rivit 'pisteet=0' ja 'elämät=100'. Siirtämällä ne loopin ulkopuolelle, sen pitäisi toimia
Kiitoksia, nyt toimii. ^^

Ratkaisu olikin siis näin yksinkertainen.. :oops:

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 11, 2011 4:54 pm
by DJ-Filbe
Mitenköhän onnistuisi yksinkertaisimmin tiedoston uploadaaminen nettiin coolbasicin kautta? Tarkoituksena kokeilla chatin tekemistä niin, että keskustelijat voivat liittää avatarin profiiliinsa chatista käsin ja lähettää tiedostoja toisilleen.

Chatin muu toteutus on tehty HTTPGetillä, eli netissä olevien tiedostojen kautta (en halua tästä päänaukomisia, näen tämän itse parhaaksi tavaksi omiin tarkoituksiini), ja menisi kyllä tuhottomasti aikaa uppia tiedostoa httpgetillä.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 11, 2011 10:08 pm
by ItzRaines
1. Minkälaisen koodin tarvitsee, että tietty toiminto tehdään kun MITÄ TAHANSA näppäintä painetaan?

2. Kun vihollinen vahingoittaa pelaajaa koskemalla siihen kuoleminen tapahtuu nopeasti, koska vihu piirittää pelaajaa koko ajan. Tarkoitus olisi saada vahingoittuminen tapahtumaan esim. noin 5 sekunnin välein, vaikka vihu koskettaisi pelaajaa koko ajan.

3. Kun pelaaja kuolee näyttöön piirretään teksti "terminoitu". Tämähän ei vielä mitään muuta, niin kuinka pysäytän myös pelin, ettei hahmoa voi enää liikuttaa kuolemisen jälkeen. Taustalla kuitenkin vielä näkyisi pelikenttä.

Edit: Jos jollakin on taitoa vaativampaan niin tausta voisi myös hieman tummentua, mutta "terminoitu" teksti pysyisi normina. :D

Tässä se koodi:

Code: Select all

SetWindow "eXc.Version 1.0 By:ItzRaines"

SCREEN 800,600,0,1
FrameLimit 100
playerpoints = 0
font = LoadFont("arial",32,1,1)
SetFont font

// Luodaan tyyppikokoelma ammuksia varten
Type BULLETS
    Field obj
End Type

// Ladataan media
Gosub LoadMedia

// Määritetään tyyppikokoelma vihollisille ja luodaan pari vihollista
Type ENEMIES
    Field obj
    Field energy
End Type
Gosub MakeEnemies

Playerhealth=100

Locate 580,570
Color cbDarkGreen
AddText "beta version 0.1"

Locate 600,0
Color cbDarkGreen
AddText "Health:"

Locate 280,50
Color cbDarkGreen
AddText "Try to survive"

/////// PÄÄSILMUKKA ///////
Repeat
    Gosub CheckButtons
    Gosub EnemyAI
    Gosub CheckBullets
    Gosub DrawGUI
       
    // Siirretään kameraa pelaajan mukana
    CloneCameraPosition player
    
    Color cbDarkGreen
    Text 0,570,"FPS:"+FPS()
     
    DrawScreen

Until EscapeKey()


/////// ALIOHJELMAT ///////
// Aliohjelma jossa ladataan pelissä tarvittava media
LoadMedia:
    // Ladataan kartta ja animoidaan se
    map = LoadMap("Media\cdm2.til", "Media\Tileset.bmp")
    PlayObject map,0,0,0.5
   
    // Ladataan panosobjektin grafiikat ja piilotetaan objekti
    bulletobject = LoadObject("Media\bullet.bmp", 72)
    ShowObject bulletobject, OFF
   
    // Ladataan pelaaja ja asetetaan törmäyksentunnistus kartan seinien ja pelaaja välille
    player = LoadObject("Media\player.bmp", 90)
    SetupCollision player,map,2,4,2
   
    // Ladataan vihollinen ja piilotetaan objekti
    enemyobject = LoadObject("Media\Enemy.bmp", 72)
    ShowObject enemyobject, OFF
   
    shot = LoadSound("Media\gun 2.wav")
    scream = LoadSound("Media\scream1.wav")
Return


// Aliohjelma joka tarkistaa näppäinpainallukset
CheckButtons:
    If UpKey() Then MoveObject player,4
    If DownKey() Then MoveObject player,-4
    If LeftKey() Then TurnObject player,5
    If RightKey() Then TurnObject player,-5   
   
    // Tarkistetaan painetaanko ampumisnäppäintä ja jos,
    // niin luodaan ammus ja törmäystunnistus sille
    If KeyHit(cbkeylcontrol) Then
        PlaySound shot, 40
        blt.BULLETS = New(BULLETS)
        blt\obj = CloneObject(bulletobject)
        CloneObjectPosition blt\obj, player
        CloneObjectOrientation blt\obj, player
        MoveObject blt\obj,15
        SetupCollision blt\obj,map,2,4,1
        ResetObjectCollision blt\obj
    EndIf
Return

// Aliohjelma, jossa tehdään viholliselle alkeellinen tekoäly
EnemyAI:
    For enem.ENEMIES = Each ENEMIES
        // Tarkistetaan näkeekö vihollisobjekti pelaajaobjekti ja
        // jos näkee niin aloitetaan liikuttamaan pelaajaa kohti
        If ObjectSight(enem\obj,player) Then
            PointObject enem\obj, player
            MoveObject enem\obj, 5
        If ObjectsOverlap (enem\obj,player) Then playerhealth = playerhealth -5
        Locate 280,90
        If playerhealth = 0 Then AddText  "Terminated"
        EndIf
    Next enem
Return

// Aliohjelma, jossa läpikäydään ammukset
CheckBullets:
    For blt.BULLETS = Each BULLETS
        MoveObject blt\obj, 50
        For enem.ENEMIES = Each ENEMIES
            // Tarkistetaan osuuko ammus viholliseen
            If ObjectsOverlap(blt\obj, enem\obj, 2) Then
                deleteobj = 1
                enem\energy = enem\energy - 40
                playerpoints = playerpoints + 10
            EndIf
        Next enem
        bulcollisions = CountCollisions(blt\obj)
        For i = 1 To bulcollisions
            // Tarkistetaan onko ammus osunut seinään
            If GetCollision(blt\obj, i) > 1 Then deleteobj = 1
        Next i
        If deleteobj = 1 Then
            DeleteObject blt\obj
            Delete blt
            deleteobj = 0
        EndIf
    Next blt
Return

// Aliohjelma jossa piirretään "käyttöliittymä"
DrawGUI:
    DrawGame
    DrawToWorld ON
    // Käydään viholliset läpi
    For enem.ENEMIES = Each ENEMIES
        PosX = ObjectX(enem\obj) - (ObjectSizeX(enem\obj)/2)
        PosY = ObjectY(enem\obj) + ObjectSizeY(enem\obj)
        EnWidth = enem\energy / 3
        Color cbWhite
        Box PosX,PosY,33,6
        Color cbBlue
        Box PosX+1,PosY-1,EnWidth-2,4
        If enem\energy <= 0 Then
            // Jos energia nollassa, niin toistetaan huuto ja poistetaan vihollistyyppi
            PlaySound scream,40
            DeleteObject enem\obj
            Delete enem
        EndIf
    Next enem
    DrawToWorld OFF
   
    // Kirjoitetaan pisteet näytölle 
    
    Color cbDarkGreen : Text 10,0, playerpoints
Return

// Aliohjelma, jossa määritetään kaksi vihollista ja niiden energia
MakeEnemies:
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,0,-500
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
   
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,0,500
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
    
     enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,-500,0
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
   
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,560,0
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
    
Return

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 11, 2011 10:24 pm
by Feuer
Ensimmäinen onnistuu GetKey()llä:

Code: Select all

Repeat
    If GetKey() Then MakeError "Anykeytä painettiin"
    
    Line 30,30,203,203
    DrawScreen
Forever

Re: Tyhmät kysymykset (I/2011)

Posted: Sat Mar 12, 2011 12:26 am
by temu92
ItzRaines wrote:2. Kun vihollinen vahingoittaa pelaajaa koskemalla siihen kuoleminen tapahtuu nopeasti, koska vihu piirittää pelaajaa koko ajan. Tarkoitus olisi saada vahingoittuminen tapahtumaan esim. noin 5 sekunnin välein, vaikka vihu koskettaisi pelaajaa koko ajan.

3. Kun pelaaja kuolee näyttöön piirretään teksti "terminoitu". Tämähän ei vielä mitään muuta, niin kuinka pysäytän myös pelin, ettei hahmoa voi enää liikuttaa kuolemisen jälkeen. Taustalla kuitenkin vielä näkyisi pelikenttä.
2. Katso funktio timer()

3. About näin:

Code: Select all

if hahmo_kuollut = false then
    // hahmon liikuttaminen etc
    if keydown(nappula) then *liikuttaminen*
else
    // Tekstin tulostus
    Text 20, 20, "You be dead, mon"
endif

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 13, 2011 8:50 pm
by Bajamaja
Pääni tuottaa lisää tyhmiä kysymyksiä. Osaako kukaan neuvoa miten palihahmon saa "osoittamaan" hiirtä kohti? Kiitoksia taas etukäteen jos joku osaa auttaa.. ^^'

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 13, 2011 8:58 pm
by Frozen
Bajamaja wrote:Pääni tuottaa lisää tyhmiä kysymyksiä. Osaako kukaan neuvoa miten palihahmon saa "osoittamaan" hiirtä kohti? Kiitoksia taas etukäteen jos joku osaa auttaa.. ^^'

Code: Select all

aim=GetAngle(ScreenWidth()/2,ScreenHeight()/2,MouseX(),MouseY())
RotateObject omaukkeli,aim
EDIT:

taas tupla vastaus.. mut mun oma oli kyl huonompi :D


Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 13, 2011 8:59 pm
by Sly_Jack0

Code: Select all

RotateObject objekti,-GetAngle(ObjectX(objekti),ObjectY(objekti),MouseWX(),mouseWY())
EDIT:

Lisäsin miinuksen GetAngle():n eteen. Nyt toimii oikein. Kiitos JATothrim, kun huomasit koodini toimimattomuuden.


Re: Tyhmät kysymykset (I/2011)

Posted: Mon Mar 14, 2011 1:44 pm
by JATothrim
Sly_Jack0 wrote:

Code: Select all

RotateObject objekti,GetAngle(ObjectX(objekti),ObjectY(objekti),MouseWX(),mouseWY())
Väitän että tuo koodi tulee kääntämään objektia päin prinkkalaa, mutta on kuitenkin parempi kuin Frozenin, koska se ottaa huomioon objektin sijainnin. ;)

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Mar 14, 2011 2:30 pm
by Jonez
JATothrim wrote:
Sly_Jack0 wrote:

Code: Select all

RotateObject objekti,GetAngle(ObjectX(objekti),ObjectY(objekti),MouseWX(),mouseWY())
Väitän että tuo koodi tulee kääntämään objektia päin prinkkalaa, mutta on kuitenkin parempi kuin Frozenin, koska se ottaa huomioon objektin sijainnin. ;)
Sanoisin että väität oikein, koska y-akseli on väärinpäin kuvien koordinaatteissa suhteessa maailmakoordinaatteihin. Ongelma korjaantuu jos vaihtaa GetAnglen y-akselit negatiivisiksi, tai sitten itse GetAngle-funktion palauttaman arvon negatiiviseksi.

Edit. no Sly_Jack0 ehtikin jo editoida viestinsä... :)

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 15, 2011 6:04 pm
by ItzRaines
Kun piirrän aseen kuvan näytölle niin se ikävästi piiloutuu kentän taakse. Missä vika?
Vaikka tilesterillä asetan "hit" kohdat niin ukko menee läpi seinistä että tyhjää vain. Onko tähänkin ratkaisu?
En nyt vaivaudu koodia pastaamaan kun siitä ei varmaankaan olisi näihin hyötyä.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 15, 2011 6:10 pm
by valscion
ItzRaines wrote:Kun piirrän aseen kuvan näytölle niin se ikävästi piiloutuu kentän taakse. Missä vika?
Sinun pitää kutsua komentoa DrawGame ennen kuin piirrät kuvia. Muuten kuvat jäävät objektien (tässä tapauksessa kartan) alle.
ItzRaines wrote:Vaikka tilesterillä asetan "hit" kohdat niin ukko menee läpi seinistä että tyhjää vain. Onko tähänkin ratkaisu?
Et aseta törmäystä oikein kartan ja ukon välille tai sitten kävelet koko ajan HIT-kerroksen päällä ukkosi kanssa, jolloin ei törmäyksiä voida tarkistaa. Kai käytät objektia etkä kuvaa ukon kohdalla?

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 15, 2011 7:18 pm
by JATothrim
ItzRaines wrote:Kun piirrän aseen kuvan näytölle niin se ikävästi piiloutuu kentän taakse. Missä vika?
Vaikka tilesterillä asetan "hit" kohdat niin ukko menee läpi seinistä että tyhjää vain. Onko tähänkin ratkaisu?
En nyt vaivaudu koodia pastaamaan kun siitä ei varmaankaan olisi näihin hyötyä.
Tilesterillä piti muistaakseni valita HIT kerros aktiiviseksi (tämä on kohta jossa useat failaavat) ja käyttää sitten tilenumero 1:stä seinien maalauksessa. Lisäksi overkerros kannataa ottaa kokonaan pois päältä, että ylipäätään näet mihin olet maalaamassa törmäyksiä. Tämä informaation hyvin häilyvää, kun en ole käyttänyt tilesteriä n. 3 vuoteen, mutta muistan tehneeni onnistuneesti toimivia karttoja tilesterillä.

SetupCollision törmääväobj, <tilemapobj>, 2,4,2 //Jokaisellelle objektille aina erikseen, eli myös klooneille, kytkee objektille pysyvästi päälle törmäykset.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 15, 2011 9:54 pm
by Kokkelkhan
Olen pohtinut pääni puhki yrittäessäni saada eräänlaista energia systeemia toimimaan. Eli tarkoitus olisi tehdä rutiini (funktio mahdollisesti?) joka vähentäisi energiaa aina tietyn määrän kun joku ehto kävisi toteen, ja sitten palauttaisi vähennetyn energian kun ehto ei ole enää tosi.
Tässä ongelma tiivistettynä:

Code: Select all

var1=0
energy=100

if var1=true then
    energy=energy-30
elseif var1=false then
    energy=energy+30
endif
Tälläinen toteutushan ei tietenkään toimi koska energiaa vähennettäisiin loputtomiin.

Ehdotuksia? Esimerkkejä? Kiitos.