Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Krhm, tässä on kyllä luovaa purkan käyttöä. Kokeiles mielummin tehdä ihan koodin ominaisuudeksi, ettei kuolleilta voi saada turpiin. Omanlaiseni viritys:

Code: Select all

 
If luoti_osuu_bossiin() Then 
   bosshp -1
   If bosshp < 0 Then
        CloneObjectPosition corpse, boss
        DeleteObject boss
   EndIf
EndIf
 
Äläkä hyvä ihminen tee ruumiista satuttavia. Mutta noin toimii kuin junan vessa, sovellappa sitä. Ja ennen kuin valitat MAVia, niin tämän kanssa et voi tarkistaa joka luupissa törmääkö hahmo bossiin, pukkaa Muisti Sisäänpääsy Väärinkäyttöä. Mielummin teet vaikka funktion, joka aluekohtaisesti luo törmäyksentarkistuksia Select-Casella. Tällöin voit yhdellä muuttujalla hallita, mitkä törmäykset ovat voimassa.

Code: Select all

Function CheckCollisions(area)

  Select area
   Case 1
    ' Alueen 1 törmäykset ja sen seuraukset
   Case 2
    ' Alueen 2 törmäykset ja uudet seuraukset 
    ' Jos et vielä tajunnut, niin tämähän ei rajoitu yhteen törmäykseen per case
    ' Vaan voit laittaa kaikille eri vihuille omat aluecaset
   Case n
    ' jne.
  End Select

If area > 2 And < 5 Then
 ' Tälläisiin lausekkeisiin taas voit törkätä törmäykset, jotka pätevät useammalla 
 ' kuin yhdellä alueella, mutteivat kaikilla. Muuta ehtolausekkeen arvot sopiviksi.

' Ja ehtolausekkeiden ulkopuolelle universaalit törmäykset kuten kartta

End Function
Tätä sitten kutsut kerran luupissa niin tulee törmäyksetkin paikalleen.
EDIT:

Happy 2kDay!

2kday.png
2kday.png (5.63 KiB) Viewed 10268 times
[/edit]
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Maamyyrä
Newcomer
Posts: 27
Joined: Thu Jun 05, 2008 10:59 am

Re: Tyhmät kysymykset

Post by Maamyyrä »

Nyt tarttis taas viisaamman apuva. Taistelu sydeemi kenkkuilee taas. Nojaa siis tärkeimmät toimii hyvin, mutta tuossa kun monsteri hyökkää niin Piirtokomennot katoaa. :) Ei se koodia kaada ,mutta hemmetin ärsyttävää se on :evil: .

Koodi siis.

Code: Select all

//taistelu////////
SCREEN 500,300


Global hp,att,levu,exp,def,tark,nextlvl,lev,mhp,monshp
Global ase As String
Global suoja As String
Global monshp As Float

Hp=100
att=1
levu=1
exp=0
def=0
ase="tyhjä"
suoja="tyhjä"
tark=2
monshp=50
hirhp=0
hirlev=0

'-----------------------------------------------------------------------------------
battle:

ClearText
ClearKeys
CloseInput

rand_monshp()

Repeat

ClearText

Color 255,255,255
Locate 5,250
AddText "1. Hyökkää.     2.Kerää voimia."
AddText ""
AddText "3. Pakene.      4.Suojaa."
Locate 4,101

'hirviön palkit
Color 255,255,255
Box 0,0,500,100,OFF
Box 0,200,500,100,OFF
Box 14,4,474,12,OFF
Box 0,200,500,100,OFF
Text 25,25,"HP:"+monshp

hpc=monshp/2

Color -hpc, hpc,0
Box 15,5,monshp,10

'pelaajan palkit
Color 255,255,255
Box 14,204,474,12,OFF
Text 25,225,"HP:"+hp

hpp=hp/2

Color -hpp, hpp,0
Box 15,205,hp,10

'---------------Hitit
If KeyHit(2) Then
   P_attack()
   WaitKey
   monsu_hit()
   WaitKey
EndIf

If hp=<0 Then
   dead()
   Goto battle
EndIf   
   
'---------------

DrawScreen 
Forever

//FUNKTIOT//----------------------------------------------

Function P_attack()

  osuu=Rand(0,tark) 
  dmg=att*osuu
    
  AddText "Lyöt hirviötä!"
    If osuu > tark-tark*0.25 Then 
        AddText "Osuit!"
        AddText "Aiheutit "+dmg+"elämä pisteen verra vauriota."
        monshp = monshp - dmg
    Else
        AddText "Ohi!"
    EndIf   
    
    DrawScreen
  Return 0
    
EndFunction  

Function monsu_hit()
    
    ml=Rand(levu-3,levu/0.25)
    
    mlevu=levu   
    If mlevu=<0 Then mlev=1
    
    osuuko=Rand(0,mlevu)
    
    If osuuko>mlevu*0.25
       mdg=Rand(3,10)*mlevu       
       hp = hp-mdg
       AddText "Menetit "+mdg+" elämäpistettä."
    Else
       AddText "Monsteri löi ohi."
    EndIf    
     DrawScreen
   Return 0
    
EndFunction    

         
Function stats()
     Text 350,10,"Taso:"+levu
     Text 350,20,"Raha:"+raha
     Text 350,30,"Exp:"+exp
     Text 350,40,"Nextlvl:"+nextlvl
     Text 350,50,"ATT:"+att
     Text 350,60,"S=näytä kaikki"
EndFunction   

Function all_stats()

     If KeyHit(31) Then 
        
        Color 10,10,255
        
        Text 1,60,"Tasosi on "+levu+"."
        Text 1,71,"Sinulla on "+raha+" kolikkoa kukkarossa."
        Text 1,82,"Sinulta puuttuu "+nextlvl+" kokemusta seuraavasta tasosta."
        Text 1,93,"Hyökkäys voimasi on "+att+"."
        Text 1,104,"Puollustus tasosi on "+def+"."
        Text 1,115,"Aseesi: "+ase+"."
        Text 1,126,"Panssarisi: "+suoja+"."
        
        Color 255,255,255
        
        DrawScreen
        WaitKey 
        Return 0
     EndIf
EndFunction     

Function rand_monshp()
      
     m=levu+3
     n=levu-3
      
     lev = Rand(n,m)
     
     If lev<=0 Then lev = 1 
     
     mhp = Rand(5,20)
      
     monshp = lev*mhp
     
     Return 0

EndFunction 

Function stats_up()
     
     If Nextlvl=<0 Then
            exp=0
            lvl=lvl+1
            tark=tark+(tark/lvl)
            att=att+(att/lvl)
            def=def+(def/lvl)
            hp=hp+(hp/(lvl*lvl))
     EndIf 
     
EndFunction     
            
Function dead()
     
     AddText "Kuolit."
     AddText "Menetät puolet rahoistasi."
     
     raha=raha/2
     
     Return 0
     
EndFunction     
     
Koodi sisältää jotain radom sälää joka ei toimi (muttei myöskään haittaa) koska koodi ossa isompaa kokonaisuutta.
One object to rule them all

Just don't kill the Master
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

DrawScreen OFF?
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Maamyyrä
Newcomer
Posts: 27
Joined: Thu Jun 05, 2008 10:59 am

Re: Tyhmät kysymykset

Post by Maamyyrä »

Kirjoittaja Ozcar
DrawScreen OFF?
Juu kokeilin. Siitä tuli semmonen pika räpsyvä epilepsia vilkku. Joko ei toimi tai tiúngin sen vääräänn kohtaan :roll:
One object to rule them all

Just don't kill the Master
E.T.
Newcomer
Posts: 42
Joined: Thu Jul 03, 2008 9:33 am

Re: Tyhmät kysymykset

Post by E.T. »

Vaikuttaisi toimivan kun pistää funktioifin DrawScreen OFF. Palkit näkyy eikä ala vilkkumaan.
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Eli siis muutat DrawScreenit OFF-muotoon, et vain lisää DrawScreen OFF-komentoa johonkin. Muutoin asetukset vilkkuvat ilkiästi.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Ozcar wrote:Krhm, tässä on kyllä luovaa purkan käyttöä. Kokeiles mielummin tehdä ihan koodin ominaisuudeksi, ettei kuolleilta voi saada turpiin. Omanlaiseni viritys:

Code: Select all

 
If luoti_osuu_bossiin() Then 
   bosshp -1
   If bosshp < 0 Then
        CloneObjectPosition corpse, boss
        DeleteObject boss
   EndIf
EndIf
 
Äläkä hyvä ihminen tee ruumiista satuttavia. Mutta noin toimii kuin junan vessa, sovellappa sitä. Ja ennen kuin valitat MAVia, niin tämän kanssa et voi tarkistaa joka luupissa törmääkö hahmo bossiin, pukkaa Muisti Sisäänpääsy Väärinkäyttöä. Mielummin teet vaikka funktion, joka aluekohtaisesti luo törmäyksentarkistuksia Select-Casella. Tällöin voit yhdellä muuttujalla hallita, mitkä törmäykset ovat voimassa.

Code: Select all

Function CheckCollisions(area)

  Select area
   Case 1
    ' Alueen 1 törmäykset ja sen seuraukset
   Case 2
    ' Alueen 2 törmäykset ja uudet seuraukset 
    ' Jos et vielä tajunnut, niin tämähän ei rajoitu yhteen törmäykseen per case
    ' Vaan voit laittaa kaikille eri vihuille omat aluecaset
   Case n
    ' jne.
  End Select

If area > 2 And < 5 Then
 ' Tälläisiin lausekkeisiin taas voit törkätä törmäykset, jotka pätevät useammalla 
 ' kuin yhdellä alueella, mutteivat kaikilla. Muuta ehtolausekkeen arvot sopiviksi.

' Ja ehtolausekkeiden ulkopuolelle universaalit törmäykset kuten kartta

End Function
Tätä sitten kutsut kerran luupissa niin tulee törmäyksetkin paikalleen.
EDIT:

Happy 2kDay!

2kday.png
[/edit]
juu u mavi tuli en ymmärtänyt täysin noita caseja mite niitä käytetään tuohon?
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Katsos, kun poistaessamme objekteja teemme samalla koodin haavoittuvaksi MAVeille, jos yritämme vielä käsitellä näitä objekteja. Niinpä et voi poistaa objektia ja sen jälkeen tehdä sen kanssa törmäyksentarkitusta, koska se pukkaa MAVia.

Minun ehdotukseni on tehdä funktio, jonka parametrinä toimii muuttuja area, joka kertoo ohjelmalle, millä alueella liikutaan. Tämän alueen mukaan ohjelma tarkistaa törmäykset, eikä siis esimerkiksi tarkista bossin törmäystä sen kuoleman jälkeen. Tuo Select-Case sitten valitsee parametrin area arvon, jolloin eri Caseissa voi olla eri törmäykset. Esimerkiksi alueen 1 (aloitusalueen) törmäykset laitat Caseen 1, kakkosalueen Caseen 2 jne. Area-muttujaa sitten muutat sen mukaan, mikä alue todella on kyseessä. Jos bossii kuolee, muutat eri alueelle, jossa bossin törmäystä ei tarkisteta. Tämä ei edellytä, että oikeasti vaihdetaan tasoa, vaan tämä on vain tapa hallita törmäyksentunnistuksia riippuen pelitilanteesta.

Ja muista asetta funktioiden sisäiset muuttujat globaaleiksi!
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

en osaa vielä tehdä funktiota niin taidan vaan heittää bossin jonnekin kauaaas .. ja siihen tilalle laitan sen kuolleen.
eli tehäänkö se näin?
ensin cloneobject kuollut
sit heittää bossi kauas? siirtämällä positionobjectia
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset

Post by DatsuniG »

rami123 wrote:en osaa vielä tehdä funktiota niin taidan vaan heittää bossin jonnekin kauaaas .. ja siihen tilalle laitan sen kuolleen.
eli tehäänkö se näin?
ensin cloneobject kuollut
sit heittää bossi kauas? siirtämällä positionobjectia
Mieti vähän mitä kysyt. Kokeilemalla tuokin olisi selvinnyt.
EDIT:

Ja alla oleva viesti on vieläkin turhempi

Last edited by DatsuniG on Mon Dec 08, 2008 5:08 pm, edited 1 time in total.
Hengität nyt manuaalisesti.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

niin niin .. minä juuri kokeilen
EDIT:

Luuletko ettei tuo sitten ole turha viesti? hä? :evil:

Last edited by rami123 on Mon Dec 15, 2008 4:18 pm, edited 2 times in total.
Heki

Re: Tyhmät kysymykset

Post by Heki »

MAVmaggot wrote:Sinulla on ylimääräinen silmukan lopetus jossakin(forever, until, next, end jotain..) Sisennä koodisi paremmin niin virhe löytyy helpommin.
Joo siellä oli ylimääränen Next
Kiitti avusta
Metsuri
Newcomer
Posts: 15
Joined: Thu Aug 14, 2008 9:34 pm

Re: Tyhmät kysymykset

Post by Metsuri »

Miten saan laitettua äänen soimaan loputtomasti ilman että siinä välissä on taukoa kun se alkaa uudestaan? Tiedoston kesto on 5 sec.
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Lataamalla sen muistiin.
sammy125
Newcomer
Posts: 8
Joined: Wed Dec 10, 2008 4:02 pm

Re: Tyhmät kysymykset

Post by sammy125 »

Tuli nyt eteen tälläinen HÖLMÖ ongelma.kun lataan tallentamani työn se ilmoittaa aina kun painaa f5 can't load image "media\guy.bmp". osaisiko joku vastata
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

sammy125 wrote:Tuli nyt eteen tälläinen HÖLMÖ ongelma.kun lataan tallentamani työn se ilmoittaa aina kun painaa f5 can't load image "media\guy.bmp". osaisiko joku vastata
olet laittanut väärän osoitteen tai tiedostoa ei ole olemassa..
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- »

Huoh... milloinkohan porukka oppii sisäistämään sen, että ilman koodia on huomattavan vaikeaa olla avuksi? -.-
"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
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Jep. Mutta veikkaan että olet koodaillut jotain ja käyttänyt mediaa coolbasic/media kansiosta ja sitten tallentanut koodisi jonnekkin. Silloin polku vaihtuu ja mediat eivät ole enää media-kansiossa koodisi sijaintiin nähden. Eli ymmärtäkää hyvät ihmiset ne polut.
sammy125
Newcomer
Posts: 8
Joined: Wed Dec 10, 2008 4:02 pm

Re: Tyhmät kysymykset

Post by sammy125 »

no minne se pitäis sitten tallentaa?
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Joko tallennat käyttämäsi mediat koodin hakemiston alahakemistoon "media", tai sitten tallennat koodisi coolbasic-kansioon. Aivan sama minne tallennat kun polku on oikein.
Locked