Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

rami123 wrote:
KillBurn wrote:
rami123 wrote:tämä on aika tyhmä kysymys : miten tehdään vihuille healthi? :roll:
Tässä tekemässäni esimerkissä on energiat vihuilla katso siitä.siinä on paljon muutakin.

Code: Select all

    FrameLimit 40
    SCREEN 800,600
    'tyypit ja niiden kentät
    Type zombis'nimi
    Field obj'objecti
    Field hp'energiat
    Field dmg'vahinko
    Field speed'nopeus
    Field score'pisteet
    Field id'minkälainen zombie on
    EndType
    Type bullets'ammukset
    Field obj
    Field hp
    Field dmg
    Field speed
    Field id
    EndType
    Type upgs'asepäivitykset
    Field obj
    Field hp
    Field id
    EndType
    'ladataan media
    gun_sound=LoadSound("media\shot.wav")
    upg_sound=LoadSound("media\whip.wav")
    enemy_sound=LoadSound("media\sheep.wav")
    map=LoadMap("media\cdm2.til","media\tileset.bmp")
    hero=LoadObject("media\soldier.bmp",32)
    zombi=LoadObject("media\guy.bmp",32)
    cow=LoadObject("media\cow.bmp",32)
    bullet=LoadObject("media\bullet.bmp",32)
    upg=LoadObject("media\bullet.bmp")
    topower=LoadObject("media\fireball.bmp")
    tospeed=LoadObject("media\bigbullet.bmp")
    medikit=LoadObject("media\tatti.bmp")
        ShowObject topower,OFF
        ShowObject tospeed,OFF   
        ShowObject bullet,OFF
        ShowObject zombi,OFF
        ShowObject cow,OFF
        ShowObject medikit,OFF
       
    SetupCollision hero,map,1,4,2

    hp=500'sinun energiat
    powupg=12'Aseen aloitus teho
    speedupg=5'aseen aloitus nopeus

    Repeat''''''''''''''''''''''''''''''

    If hp>0 Then 'jos on energiaa niin suritetaan kaikki
    CloneCameraPosition hero
    MoveObject hero,UpKey()*6-DownKey()*4
    TurnObject hero,LeftKey()*5-RightKey()*5
    'Aseet''''''''''''''''''''''''''''''''''''''''
    If KeyDown(CBKEYz) And reload<0
        PlaySound gun_sound,40
        newBullet.BULLETS= New(BULLETS)
        newBullet\obj=CloneObject(bullet)
        newbullet\dmg=powupg
        newbullet\speed=speedupg
        CloneObjectPosition newBullet\obj,hero
        CloneObjectOrientation newbullet\obj,hero
        MoveObject newBullet\obj,24
        reload=15
        SetupCollision newbullet\obj,map,1,4,2
    EndIf
    reload-1
    For iBullet.BULLETS= Each BULLETS
    If CountCollisions(ibullet\obj) Then ibullet\hp-32
    MoveObject iBullet\obj,6'llikutetaan luotia

    Next iBullet
    'Asepäivitykset''''''''''''''''''''''''''''''''
    If uusi>220
        newupg.upgS= New(upgS)'thdään uusi
        newupg\obj=CloneObject(upg)
        newupg\hp=100
        newupg\id=Rand(1,3)
        If Newupg\id=1 Then PaintObject newupg\obj,topower
        If Newupg\id=2 Then PaintObject Newupg\obj,tospeed 
        If Newupg\id=3 Then PaintObject Newupg\obj,medikit
        'Asetetaan tavara kohtaan missä ei ole törmäystä
        For y=1 To MapWidth()
        For x=1 To MapWidth()
            If GetMap2(2,x,y)=0 Then PositionObject newupg\obj,Rand(-600,500),Rand(-600,600)
        Next x
        Next y
       
        uusi=0
    EndIf
    uusi+1
    For iupg.upgS= Each upgS'aloitetaan kaikkien päivitysten käsittely
    If ObjectsOverlap(iupg\obj,hero) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
    If iupg\hp<0 Then'jos tuhotaan tavara
        PlaySound upg_sound'soitetaan ääni
        If iupg\id=1 Then powupg+1'lisätään aseen thoa
        If iupg\id=1 Then speedupg+1'nopeutta
        If iupg\id=3 Then hp+50'lisää energiaa
        DeleteObject iupg\obj'poistetaan tavara
        Delete iupg'ja sen jasen
    EndIf
    Next iupg
    'zombit''''''''''''''''''''''''''''''''''''''''
    If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
        newzombi.zombiS= New(zombiS)
        newzombi\obj=CloneObject(zombi)
        'Asetetaan vihollinen kohtaan missä ei ole törmäystä
        For y=1 To MapWidth()
        For x=1 To MapWidth()
            If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
        Next x
        Next y
       
        newzombi\id=Rand(1,2)
        If newzombi\id =1'Ykkös zombi
            newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
        EndIf
        If newzombi\id =2'kakkos zombi
            PaintObject newzombi\obj,cow
            newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
        EndIf
        SetupCollision newzombi\obj,map,1,4,2
        luo=0
    EndIf
    luo+1
    For izombi.zombiS= Each zombiS'Aloitetaan zombien läpikäynti
    'Typerä tekoäly
    sidle=Rand(-20,20)
    If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle'jos kosketaan deinään, niin stepataan

    PointObject izombi\obj,hero'zombi tähtää pelaajaan
    If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg

    For ibullet.bullets=Each bullets
    If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
    If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
        DeleteObject iBullet\obj
        Delete iBullet
    EndIf
    Next ibullet

    MoveObject izombi\obj,izombi\speed'liikutetaan zombia nopeutensa verran

    If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
        PlaySound enemy_sound
        score+izombi\score
        DeleteObject izombi\obj
        Delete izombi
    EndIf
    Next izombi
    EndIf

    DrawGame'ettei teksti jää kartan alle
    Text 10,10,"HP "+hp
    Text 10,20,"score "+score
    If hp<0 Then Text 350,300,"GAME OVER"
    DrawScreen

    Forever 
Jos et ymmärtänyt niin, type vihuun luodaan kenttä Hp ja vihua luotaessa se asetetaan tiettyyn arvoon.
mitä nuo upgs asepäivitykset ovat? tässä toinen tyhmä kysymys : miten laitetaan tuollainen hyökkäys itsellekin? kuin zombeilla että kun huidotaan viikatteella vihollisia niin niiltä lähtee samalla lailla hp tä kuin viholliset tuossa esimerkissäsi törmäävät heroon? :roll:
If objectsoverlap (viikate,izombie\obj) then izombie\hp-1
Älkää nyt ihan kaikkea kysykö.

Ja ne asepäivitys jutut on niitä tavaroita varten.
Last edited by KillBurn on Sat Sep 27, 2008 4:25 pm, edited 1 time in total.
Sumu Games: Sam, Ur eye!
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

@ SuojelusPrkl: Olethan varma, että kuvaruutu tyhjennetään joka kierroksella? Tämä onnistuu Cls komennolla, ja DrawScreenkin tekee sen automaattisesti, ellei toiseen parametriin ole asetettu nollaa.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset

Post by axu »

Onko ruudun tyhjennys päällä?(aika tyhmä kysymys mutta en keksi muuta selitystä tolle)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
SuojelusPerkele
Newcomer
Posts: 37
Joined: Tue Sep 09, 2008 4:17 pm

Re: Tyhmät kysymykset

Post by SuojelusPerkele »

hmm... Tässä on tuo valikko, Programmer of DSG:n aloittelijoille tekemä valikko:

Code: Select all

 Repeat
 VALIKKO:

cursor=LoadObject("unlimited\media\target.bmp")
 PositionObject cursor,MouseWX(),MouseWY()  
 ClsColor cbBlack
    If Button(350,200,100,30,"Aloita") Then Goto PELI 
    If Button(350,250,100,30,"Asetukset") Then MakeError "Asetukset kehittelyssä"
    If Button(350,300,100,30,"Lopeta") Then MakeError "Peli loppui"
    DrawScreen
    Forever

    Function Button(x,y,w,h,s$)

        Color 0,255,0
        Box x,y,w,h
        Color 255,255,255
        Line x,y,x+w,y
        Line x,y,x,y+h
        Color 200,255,200
        Line x+1,y+1,x+1+w-2,y+1
        Line x+1,y+1,x+1,y+1+h-2
        Color 0,128,0
        Line x,y+h+1,x+w,y+h+1
        Line x+w+1,y+h+1,x+w+1,y
        Color 0,164,0
        Line x+1,y+h,x+w-1,y+h
        Line x+w,y+h,x+w,y+1
        Color 0,64,0
        CenterText x+w/2,y+h/2,s$,2
       
        If MouseX() > X And MouseX() < X + W And MouseY() > Y And MouseY() < Y+H Then
       
            Color 0,255,0
            Box x,y,w+2,h+2

            Color 255,255,255
            CenterText x+1+w/2,y+1+h/2,s$,2
       
       
            If MouseDown(1) Then
               
                Color 0,255,0
                Box x,y,w,h
                Color 40,164,40
                Line x,y,x+w,y
                Line x,y,x,y+h
                Color 20,128,20
                Line x+1,y+1,x+1+w-2,y+1
                Line x+1,y+1,x+1,y+1+h-2
                Color 220,255,220
                Line x,y+h+1,x+w,y+h+1
                Line x+w+1,y+h+1,x+w+1,y
                Color 255,255,255
                Line x+1,y+h,x+w-1,y+h
                Line x+w,y+h,x+w,y+1
                Color 255,255,255
                CenterText x+2+w/2,y+2+h/2,s$,2
               
            EndIf
           
            If MouseUp(1) Then Return 1
       
        EndIf



    EndFunction 
   End 
Blooddrunk Game Industry [BGI] :

Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla

Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

SuojelusPerkele wrote:hmm... Tässä on tuo valikko, Programmer of DSG:n aloittelijoille tekemä valikko:

Code: Select all

 Repeat
 VALIKKO:

cursor=LoadObject("unlimited\media\target.bmp") 
...
Lataat cursor-objektin loopissa. En kyllä tiedä, että miksi ne aiemmat kursorit silti jäävät ruudulle, koska eihän niitä pitäisi olla olemassa enää uuden lataamisen jälkeen, eli tämä saattaa tietysti olla väärä virhe, mutta virhe joka tapauksessa.
CoolBasic henkilökuntaa
Kehittäjä
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset

Post by axu »

Itseasiassa ne jäävät. jos aiot ladata objektin uudelleen, niin poista ensin vanha alta pois.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

miten saa poistettua viholliset jotka menevät kartan ulkopuolelle?
SuojelusPerkele
Newcomer
Posts: 37
Joined: Tue Sep 09, 2008 4:17 pm

Re: Tyhmät kysymykset

Post by SuojelusPerkele »

axu wrote:Itseasiassa ne jäävät. jos aiot ladata objektin uudelleen, niin poista ensin vanha alta pois.
Kuinkas tämä tarkkaan ottaen tapahtuu?
Blooddrunk Game Industry [BGI] :

Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla

Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Tyhmät kysymykset

Post by nevssons »

SuojelusPerkele wrote:
axu wrote:Itseasiassa ne jäävät. jos aiot ladata objektin uudelleen, niin poista ensin vanha alta pois.
Kuinkas tämä tarkkaan ottaen tapahtuu?
DELETEOBJECT
Koodarina kohtalainen, henkilönä vittumainen
Image
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 »

SuojelusPerkele wrote:
axu wrote:Itseasiassa ne jäävät. jos aiot ladata objektin uudelleen, niin poista ensin vanha alta pois.
Kuinkas tämä tarkkaan ottaen tapahtuu?
Itse asiassa ei kannata ladata sitä loopissa ollenkaan (vaan, yllätys yllätys, ennen looppia) , mutta objekti deletoidaan näin:

Code: Select all

deleteobject objektinnimi
Huomaa, että objektin lataus+deletointi joka loopissa on pirun hidasta, joten rivi

Code: Select all

cursor = LoadObject("unlimited\media\target.bmp")
olisi parasta siirtää ennen looppia. Toinen vaihtoehto on kloonata ja deletoida, mutta.. ei kai siinä olisi mitään järkeä O.o
SuojelusPerkele
Newcomer
Posts: 37
Joined: Tue Sep 09, 2008 4:17 pm

Re: Tyhmät kysymykset

Post by SuojelusPerkele »

Bugi on selätetty! Itse asiassa riitti pelkästään tuo kohta:

Code: Select all

cursor = LoadObject("unlimited\media\target.bmp")
rivi olisi parasta siirtää ennen looppia
Tuolla tuo toimii, en koettanut objektin poistoa.
Blooddrunk Game Industry [BGI] :

Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla

Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Oikeastaan et tarvitse tuossa objektia, joten homman voisi hoitaa tyyliin:

Code: Select all

  Cursor = LoadImage("media/target.bmp")
  ShowMouse Cursor
  
  Repeat 
    // ...
    DrawScreen
  Forever 
anttimoi
Newcomer
Posts: 25
Joined: Mon Aug 11, 2008 7:33 pm

Re: Tyhmät kysymykset

Post by anttimoi »

Miten voisin piirtää objectin over-layerissa olevien juttujen päälle, kun tuppaa ne aina tulemaan eteen.
Coolbasic roguelike-projekti menossa 8)
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

anttimoi wrote:Miten voisin piirtää objectin over-layerissa olevien juttujen päälle, kun tuppaa ne aina tulemaan eteen.
Koitappa objectorder objecti,1
EDIT:

Joo.Ei toimi... :|

Last edited by KillBurn on Tue Sep 30, 2008 9:14 pm, edited 1 time in total.
Sumu Games: Sam, Ur eye!
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset

Post by axu »

KillBurn wrote: anttimoi kirjoitti:Miten voisin piirtää objectin over-layerissa olevien juttujen päälle, kun tuppaa ne aina tulemaan eteen.


Koitappa objectorder objecti,1
Ei muuten onnistu. Kartta piirretään aina päällimmäiseksi.
Nopeasti ajatellen voisi mennä tyyliin tähän:

Code: Select all

SetMap Kartta,0,1
DrawGame
SetMap Kartta,1,0
DrawGame
Ton kanssa voi joutua kyllä kikkailemaan kovasti, mutta jos joku tapa on, niin se täytyy tehdä Setmapeilla ja ehkä myösShowObjecteilla ;)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 »

Tai toinen keino on piirtää back layeriin :P
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset

Post by axu »

Niin mutta kysymys olikin, miten piirretään over layerin päälle. Jos Haluaa 2 tileä päällekkäin, ja piirtää ne kummatkin back-kerrokseen, niin pitäisi tehdä jokaiselle vaihtoehdolle oma tile. Eli jos tilesetti on 10*10 tileä joutuisi piirtämään 100^2 eri vaihtoehtoa eli ylimääräistä tileä(korjatkaa jos olen väärässä tuon laskun suhteen)!! :D
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

..no kuvilla nyt ainakin voi saada piirrettyä over-layerin päälle, mutta käytät varmaankin objekteja kun kuvat tuntuvat liian hankalilta?
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
SuojelusPerkele
Newcomer
Posts: 37
Joined: Tue Sep 09, 2008 4:17 pm

Re: Tyhmät kysymykset

Post by SuojelusPerkele »

Mikäs tässä tökkii?

Koklasin tehä kolikonheitto-konetta vaan se arpoo ainoastaan klaavoja..

Code: Select all

Repeat
ClsColor cbwhite 
Color cbblack
Text 120,0, "heitetään kolikkoa"
DrawScreen 
heitto=Rand(1,2)
If heitto=1 Then 
klaava+1
If heitto=2 Then
kruuna+2
EndIf
EndIf 
Text 10,30, "kruuna:  "+kruuna
Text 10,50, "klaava:  "+klaava
Forever 
Blooddrunk Game Industry [BGI] :

Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla

Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Ris
Active Member
Posts: 142
Joined: Wed Jul 02, 2008 8:27 pm

Re: Tyhmät kysymykset

Post by Ris »

Poistaa saa.
Last edited by Ris on Fri Oct 03, 2008 3:32 pm, edited 10 times in total.
Locked