Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Geewilliam
Newcomer
Posts: 6
Joined: Sun Aug 21, 2011 11:19 am

Re: Tyhmät kysymykset (I/2011)

Post by Geewilliam » Sun Aug 21, 2011 11:43 am

Tälläinen tyhmä kysymys. Olen aikaisemmin koodaillut mm. pythonilla ja nyt harjoittelen CB:tä. Jos joku voisi selittää miten CB:ssä käytetään muuttujia ja If...Else-lauseita. Tämän voi näyttää simppelillä esimerkillä, jonka tulos olisi about tälläinen:
(Input kenttä)
Tunnuns:
Salasana:

Jos tunnuns on "tunnus" ja salasana "salasana"
tulosta "oikein"
muuten:
tulosta "väärin"

Ymmärsikö joku? =P

Oma yritelmä :oops: , (En siis oletakkaan tuon toimivan...Ja tuossa on vasta pelkällä salasanalla, vaikka tunnuksen löytyykininputti, joka ei tosin toimi, kun laitoin toisen inputin alle.)

Code: Select all

Repeat

  
    
        Color cbwhite
    
       console=ON
            
       
            command$=Input("tunnus:  ")
            
            commands$=Input ("salasana","*")
            
           
            
            
            If KeyHit (cbkeyreturn)
            
            If {commands$="tunnus"}                         //ongelma on ilmeisesti täällä. En tiedä miten saan tuon tyyliin "if 
               {Print "oikein"}      //commands="salasana"... 
            EndIf    
            EndIf 
        
    
    
  
    
       
    DrawScreen

Until EscapeKey()
Pahoittelen ylimääräisiä välejä.
Ja jos joku ei selitystäni ymmärtänyt, mutta osaa pythonia, niin tässä sama pythonilla:

Code: Select all

tunnus = ""
salasana = ""
while tunnus <> "tunnus" and salasana <> "salasana":
    tunnus = raw_input ("Tunnus: ")
    salasana = raw_input ("Salasana: ")
print "Oikein!"
Tai yksinkertaistetuna pythonilla:

Code: Select all

tunnus=raw_input ("Tunnus: ")
if tunnus=="tunnus":
    print "Oikein!"
EDIT:

Kiitos vastauksesta, se auttanee minut hyvin alkuun CB-ohjelmoinnissa =).
En viitsinyt laittaa pientä kiitosviestiä erikseen kysymysten tulvan tielle...

Last edited by Geewilliam on Sun Aug 21, 2011 12:32 pm, edited 1 time in total.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2011)

Post by koodaaja » Sun Aug 21, 2011 12:13 pm

Kommenteissa ehdottamasi 'If commands="salasana"' on aivan oikein - loppuun voi tosin vielä lisätä Then -komennon, mutta se on välttämätön vain yksirivisessä If-lauseissa.

Vika lienee enemmänkin tavassasi käyttää Input-komentoa. CB kun ei osaa käyttää kahta Inputia yhtä aikaa, koska silloinhan ei voida päättää kumpaan tekstiä halutaan kirjoittaa (toki on mahdollista kirjoittaa oma järjestelmä jossa esimerkiksi tekstikentän napsauttaminen aktivoi sen tai vastaavaa.) Input ei myöskään pysäytä muun ohjelman suoritusta toisin kuin pythonin raw_input vaikuttaisi tekevän. Tällä on omia hyviä käyttötarkoituksiaan, mutta se hankaloittaa yksinkertaisen tekstikenttäkyselyn tekoa jonkin verran.

Tässäpä pieni esimerkkikoodi aiheesta, yleensä käyttäisin ehkä addtextien sijaan textiä mutta input ja addtext siirrellään molemmat locatella joten tuntui jotenkin luontevammalta.

Code: Select all

Repeat
    //nollataan muuttujat
    tunnus$ = ""
    salasana$ = ""
    
    //kirjoitetaan salasanakohta valmiiksi pari riviä alemmas, jotta se ei vain ilmesty inputin tullessa
    Locate 10,30
    AddText "salasana:"
    
    //kysytään tunnusta
    Locate 10,10
    Repeat
        tunnus$ = Input("tunnus: ")
        DrawScreen
    Until KeyHit(28)
    
    //tyhjennetään näppäinpuskuri ettei edellinen enterin painallus poistu suoraan seuraavastakin loopista
    ClearKeys
    //nollataan input seuraavaa kyselyä varten
    CloseInput
    
    //lisätään äsken kirjoitettu tunnus näkyviin, jotta se ei katoa salasanaa kysyttäessä
    Locate 10,10
    AddText "tunnus: "+tunnus
    
    //kysytään salasana
    Locate 10,30
    Repeat
        salasana$ = Input("salasana: ","*")
        DrawScreen
    Until KeyHit(28)
    
    //tyhjennetään addtextillä lisätyt tekstit, nollataan näppäimet ja input mahdollista seuraavaa kierrosta varten
    ClearText
    ClearKeys
    CloseInput
    
    //jos tunnus meni oikein, poistutaan, muuten kysytään uudestaan
Until tunnus = "tunnus" And salasana = "salasana"

//näytetään käyttäjälle että kirjautuminen onnistui
ClearText
Locate 10,10
AddText "Oikein!"
Repeat
    DrawScreen
Until KeyHit(28)

reinikainen

Re: Tyhmät kysymykset (I/2011)

Post by reinikainen » Sun Aug 21, 2011 6:38 pm

Minulla on ongelma miten saan ampumisen tasohyppelyyn. Yritin esimerkkin 19.painovoimaan lisäämällä ampusin jostain toisesta esimerkistä muttei toimi.

User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (I/2011)

Post by Ilkka » Sun Aug 21, 2011 7:40 pm

reinikainen wrote:Minulla on ongelma miten saan ampumisen tasohyppelyyn. Yritin esimerkkin 19.painovoimaan lisäämällä ampusin jostain toisesta esimerkistä muttei toimi.
Paina F8 ja avaa esimerkit 18 ja 19. Mieti ja opettele, mitä jokainen komento tekee riveillä. Esimerkkien alhaalla on kattavat tekstit missä kerrotaan mitä tehdään. Sovella esimerkkejä ja yritä uudelleen yhdistää. Se on paljon helpompaa jos tiedät mitä teet... ;)
Image

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus » Sun Aug 21, 2011 7:48 pm

Ilkka wrote:
reinikainen wrote:Minulla on ongelma miten saan ampumisen tasohyppelyyn. Yritin esimerkkin 19.painovoimaan lisäämällä ampusin jostain toisesta esimerkistä muttei toimi.
Paina F8 ja avaa esimerkit 18 ja 19. Mieti ja opettele, mitä jokainen komento tekee riveillä. Esimerkkien alhaalla on kattavat tekstit missä kerrotaan mitä tehdään. Sovella esimerkkejä ja yritä uudelleen yhdistää. Se on paljon helpompaa jos tiedät mitä teet... ;)
Mitäs sitä suotta miettimään, mitä kommennot tekevät, kun manuaalikin on olemassa ja kaksoisklikkaamalla jotain komentoa saa suoraan hyvän selityksen siitä, mitä se tekee.

reinikainen: Suosittelen ainakin Esimerkit ja tutoriaalit -alueella olevan type-tutoriaalin lukemista. Se voi tuntua isolta urakalta, mutta kannattaa.

User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (I/2011)

Post by Ilkka » Sun Aug 21, 2011 7:50 pm

Chaosworm wrote:
Ilkka wrote:
reinikainen wrote:Minulla on ongelma miten saan ampumisen tasohyppelyyn. Yritin esimerkkin 19.painovoimaan lisäämällä ampusin jostain toisesta esimerkistä muttei toimi.
Paina F8 ja avaa esimerkit 18 ja 19. Mieti ja opettele, mitä jokainen komento tekee riveillä. Esimerkkien alhaalla on kattavat tekstit missä kerrotaan mitä tehdään. Sovella esimerkkejä ja yritä uudelleen yhdistää. Se on paljon helpompaa jos tiedät mitä teet... ;)
Mitäs sitä suotta miettimään, mitä kommennot tekevät, kun manuaalikin on olemassa ja kaksoisklikkaamalla jotain komentoa saa suoraan hyvän selityksen siitä, mitä se tekee.

reinikainen: Suosittelen ainakin Esimerkit ja tutoriaalit -alueella olevan type-tutoriaalin lukemista. Se voi tuntua isolta urakalta, mutta kannattaa.
Juu tarkotin, jotain tuommosta komentojen lukemista, mutta pää jotenki sekasi enkä muistanu mistä ne pysty lukeen! :lol:
Image

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2011)

Post by naputtelija » Mon Aug 22, 2011 8:56 am

Chaosworm wrote:
Ilkka wrote:
reinikainen wrote:Minulla on ongelma miten saan ampumisen tasohyppelyyn. Yritin esimerkkin 19.painovoimaan lisäämällä ampusin jostain toisesta esimerkistä muttei toimi.
Paina F8 ja avaa esimerkit 18 ja 19. Mieti ja opettele, mitä jokainen komento tekee riveillä. Esimerkkien alhaalla on kattavat tekstit missä kerrotaan mitä tehdään. Sovella esimerkkejä ja yritä uudelleen yhdistää. Se on paljon helpompaa jos tiedät mitä teet... ;)
Mitäs sitä suotta miettimään, mitä kommennot tekevät, kun manuaalikin on olemassa ja kaksoisklikkaamalla jotain komentoa saa suoraan hyvän selityksen siitä, mitä se tekee.

reinikainen: Suosittelen ainakin Esimerkit ja tutoriaalit -alueella olevan type-tutoriaalin lukemista. Se voi tuntua isolta urakalta, mutta kannattaa.
Itselläni kesti 3 kuukautta ennen kuin ymmärsin cbn sekavan typen...
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...

Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Mon Aug 22, 2011 8:40 pm

Kun mulla olen toteuttanut tällä tavalla rts peliini taistelusysteemin...

Code: Select all

If ObjectsOverlap(spearman,swordman) And man1 = 1 And vihu1 = 1 Then
Randomize Timer()
fight = Rand (1,100)
If fight = >75 Then
spearman1_hp = spearman1_hp -10

ElseIf fight = <75 Then 
vihu1_hp = vihu1_hp -10
EndIf
EndIf
Kuinka saisin toteutettua niin, että jokaisella kerralla (kun objektit ovat päällekkäin) tulisi pieni tauko ennen seuraavaa "rand" hommaa? Siis tässä mikä minulla on nyt käy niin että toinen objekteista "tappaa" heti toisen objektin kun ne ovat päällekkäin. (molemmilla "objekteilla" on "hp" muuttuja aluksi 100). En ole osannut sellaista "taukoa" Timer komennolla tehdä... Siis tässä pitäisi tulla tauko joka kerta kun vähennetään muuttujaa hp, ja että tauko ei pysäytä "koko" peliä, vaan vain ne objektit mitkä ovat "päällekkäin".

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus » Mon Aug 22, 2011 8:51 pm

Ihminen wrote:Kun mulla olen toteuttanut tällä tavalla rts peliini taistelusysteemin...

Code: Select all

If ObjectsOverlap(spearman,swordman) And man1 = 1 And vihu1 = 1 Then
Randomize Timer()
fight = Rand (1,100)
If fight = >75 Then
spearman1_hp = spearman1_hp -10

ElseIf fight = <75 Then 
vihu1_hp = vihu1_hp -10
EndIf
EndIf
Kuinka saisin toteutettua niin, että jokaisella kerralla (kun objektit ovat päällekkäin) tulisi pieni tauko ennen seuraavaa "rand" hommaa? Siis tässä mikä minulla on nyt käy niin että toinen objekteista "tappaa" heti toisen objektin kun ne ovat päällekkäin. (molemmilla "objekteilla" on "hp" muuttuja aluksi 100). En ole osannut sellaista "taukoa" Timer komennolla tehdä... Siis tässä pitäisi tulla tauko joka kerta kun vähennetään muuttujaa hp, ja että tauko ei pysäytä "koko" peliä, vaan vain ne objektit mitkä ovat "päällekkäin".
1) Käytä typejä noita objekteja varten, niin ei tarvitse joka ikiselle unitille erikseen kirjoittaa.
2) Laita siihen field, jonka nimi on esimerkin vuoksi cooldown.
3) Joka kerta kun vähennät hp:ta, aseta sen jäsenen cooldown-fieldin arvo Timer()iksi.
4) Vähennä hp:ta ainoastaan jos Timer()in ja sen jäsenen cooldown-fieldin arvon erotus on yli X, missä X on haluamasi tauon pituus millisekunteina.

User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by axu » Tue Aug 23, 2011 9:39 am

Chaosworm wrote:1) Käytä typejä noita objekteja varten, niin ei tarvitse joka ikiselle unitille erikseen kirjoittaa.
2) Laita siihen field, jonka nimi on esimerkin vuoksi cooldown.
3) Joka kerta kun vähennät hp:ta, aseta sen jäsenen cooldown-fieldin arvo Timer()iksi.
4) Vähennä hp:ta ainoastaan jos Timer()in ja sen jäsenen cooldown-fieldin arvon erotus on yli X, missä X on haluamasi tauon pituus millisekunteina.
Jos peli ei ole FPS-riippumaton, kannattaa muokata ylläolevaa niin, että Timer():n sijaan joku framecounter, eli joka framessa nostat muuttujan (esim. Frame) arvoa yhdellä. Erotus ei silloin ole millisekunneissa vaan frameissa mitattu.

Tämä on parempi sen takia, jos pelisi alkaa yhtäkkiä hidastumaan, myös kuolemattomuusaika kasvaa, ja pysyy samana suhteessa muuhun peliin.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image

User avatar
skinkken
Advanced Member
Posts: 453
Joined: Sat Sep 01, 2007 4:00 pm
Location: Helsinki

Re: Tyhmät kysymykset (I/2011)

Post by skinkken » Wed Aug 24, 2011 3:48 pm

Miksi ihmeessä tämä mavaa?

Code: Select all

ukko = LoadImage("Media\guy.bmp")

object=MakeObject()

PaintObject object,ukko

Repeat
    DrawScreen
Forever
EDIT:

Ei mitään enää, paintobjectissa pitää olla miinus muuttujan edessä jos se on kuva.

Valmiit pelit: House of Horrors , Battle Zone , Über Ball , Itdoti , Space Chaos , Bloxxplosives
Projekti jota teen ehkä joskus vielä: viewtopic.php?f=11&t=2636 <-- Tämä rivi päivitetty 14.1.2013

User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Akuji » Wed Aug 24, 2011 5:16 pm

Tässä, kun käytän playobjectia, niin animaatio alkaa aivan normaalisti alusta ja toimii oikein hyvin, mutta animaatio päättyy ensimmäiseen frameen animoidussa kuvassa. Miten saisin korjattua sen niin, että se päättyisi viimeiseen frameen?

Code: Select all

     'Vihu kuolee
    newRaato.RAADOT = New(RAADOT)
    newRaato\obj = CloneObject( raato )
   
    'Ruumis samaan paikkaan missä vihu kuolee
    CloneObjectPosition newRaato\obj,enem\obj
    
    'Soitetaan vihulle kuolemis-animaatio
    PlayObject newRaato\obj,0,8,0.10
    
    'Ruumis samaan suuntaan kuin vihu
    CloneObjectOrientation newRaato\obj,enem\obj

User avatar
Noun
Newcomer
Posts: 19
Joined: Sun May 08, 2011 8:17 pm
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Noun » Thu Aug 25, 2011 10:54 am

Kuinka saan selville objektin ruutukoordinaatit?

EDIT: Jes, keksin omin avuin. Nyt tunnen itseni kaikkivoipaksi.

Code: Select all

hahmoruutux=-(CameraX()-(ScreenWidth()/2)-ObjectX(ukko))
hahmoruutuy=CameraY()+(ScreenHeight()/2)-ObjectY(ukko)

User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo » Mon Aug 29, 2011 6:45 am

kuinka onnistuu se että kun hahmo hyppää niin se tulee kolmen sekunnin päästä alas????
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU

User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Akuji » Mon Aug 29, 2011 2:45 pm

Minkälaista hyppyä tarkoitat? Sellaista, että pelihahmo vain hyppää ja on ilmassa 3 sekuntia, vai sitä, että pelihahmo hyppää tietylle korkeudelle ja pysähtyy siihen kolmeksi sekunniksi ja putoaa alas?

Tässä on ainakin tällainen painovoimaesimerkistä muokkaamani koodi. Muutin painovoimaa ja hypyn voimaa niin, ettei pelihahmo hyppää liian korkealle.

Code: Select all

'Esimerkki 19 : Painovoima (Tasohyppelyssä)
'================================================

'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
'Aja tämä ohjelma painamalla F5.
'Lopeta ohjelma painamalla ESC.

'OHJAUS:
' - nuolilla liikkuu
' - Z = hyppy

'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

Const PAINOVOIMA = -0.05 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0          'Tämä hallitsee hyppyä


'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 320,240,0,cbsizable 
SetWindow "Painovoimaesimerkki",3 'suurenna ruudulle

'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23

FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
    ElseIf LeftKey() Then
        'juokse vasemmalle
        PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=2.5 'voimaa ylös päin
    EndIf

    DrawScreen 'piirrä näyttö

Until EscapeKey()

User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo » Mon Aug 29, 2011 4:53 pm

Tarkoitin tätä:
Akuji wrote: pelihahmo vain hyppää ja on ilmassa 3 sekuntia,
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU

User avatar
valscion
Moderator
Moderator
Posts: 1591
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion » Mon Aug 29, 2011 10:46 pm

Laurenzo wrote:Tarkoitin tätä:
Akuji wrote: pelihahmo vain hyppää ja on ilmassa 3 sekuntia,
Se vaatii sen, että hoidat koko pelin mekaniikan FPS-riippumattomasti ja lasket jollain matemaattisella kaavalla oikean painovoiman niin, että jos pelaaja päätyy samalle tasolle hypättyään on hän ollut kolme sekuntia ilmassa. Siinä olisi sen verran tehtävää, että tuskinpa saat valmista koodia meiltä.

Tee pelistäsi ensin FPS-riippumaton (eli ukon nopeus ja hypyn nopeus yms. menevät Timer()-funktion avulla, katso foorumeilta esimerkkejä aiheesta) ja testaile sitten eri painovoimavakioita, kunnes alat lähestyä kolmen sekunnin ilmalentoa. Näin siis jos joku ei nyt heti keksi, millä kaavalla saisit oikean painovoimavakion irti.
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

Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Tue Aug 30, 2011 2:04 pm

Olen typellä tehnyt 10 "vihollista" ja nyt täytyisi saada jokaiselle "viholliselle" hit_points muuttuja. Olen kokeillut jotain, mutta joka kerta kun hit_points muuttuja on 0 poistetaan kaikki viholliset, eikä vain yhtä, miten olin sen tarkoittanut...
Miten sen saisin tehtyä?

User avatar
Latexi95
Guru
Posts: 1165
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Tue Aug 30, 2011 2:39 pm

Ihminen wrote:Olen typellä tehnyt 10 "vihollista" ja nyt täytyisi saada jokaiselle "viholliselle" hit_points muuttuja. Olen kokeillut jotain, mutta joka kerta kun hit_points muuttuja on 0 poistetaan kaikki viholliset, eikä vain yhtä, miten olin sen tarkoittanut...
Miten sen saisin tehtyä?

Code: Select all

Type vihut
    Field obj
    Field elkut
EndType



//Poisto:
for vihu.vihut = each vihut
    If vihu\elkut < 1 then
         DeleteObject vihu\obj
         Delete vihu
    EndIf
next vihu
    

Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Wed Aug 31, 2011 2:43 pm

Code: Select all

If enemy\enemy_hp < 1 Then
PaintObject pahis\obj, dead_human
EndIf
Next pahis
Kun mulla on tollanen niin, kun on "tappanut" yhden "vihollisen" ja kun "tapan" seuraavan tulee Memory access violation! Miksi?
Jos laitan tuon "paintObjektin" tilalle "deleteobject pahis\obj, silloin ei tule mitään ongelmia.
Kaikki for, ja each hommat pitäisi olla ihan "oikein". (Tuossa koodinpätkässä ei niitä näy, mutta kyllä ne minulla on siellä).

Locked