Älä osu mappiin!!

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Älä osu mappiin!!

Post by phons »

Joo tää on tämmönen aika huono esimerkki jossa on ukko jota ohjataan eikä saa osua seiniin tai toisiin ukkohin paitsi yhteen joka ei liiku(en kerro missä se on etsikää itse :lol: ) se joka ei liiku on semmoine "voittamis nappi" eli kun osut siihen voitat. Koodi alhaalla.

Code: Select all

FrameLimit 40

SetWindow "Älä törmää seiniin peli.",0,"Oletko aivan varma?"

SCREEN 640,480,16,cbfullscreen 

map=LoadMap("C:\Program Files\CoolBasic\Media\cdm2.til","C:\Program Files\CoolBasic\Media\tileset.bmp")
guy=LoadObject("C:\Program Files\CoolBasic\Media\guy.bmp",72)
arial=LoadFont("arial",50,ON)
stranger=LoadObject("C:\Program Files\CoolBasic\Media\guy.bmp",72)
vihu=LoadObject("C:\Program Files\CoolBasic\Media\guy.bmp",72)
vihu2=LoadObject("C:\Program Files\CoolBasic\Media\guy.bmp",72)
PositionObject stranger,30,-600
PositionObject vihu,-70,-250
PositionObject vihu2,-30,-400
i=0

Repeat

If KeyDown(cbkeyw) Then MoveObject guy,2.3
If KeyDown(cbkeya) Then TurnObject guy,4
If KeyDown(cbkeyd) Then TurnObject guy,-4

SetupCollision guy,map,1,4,2
SetupCollision vihu,map,1,4,2
SetupCollision vihu2,map,1,4,2
CloneCameraPosition guy

DrawGame

If Distance2(guy,vihu)<120 Then
PointObject vihu,guy
MoveObject vihu,2
EndIf

If Distance2(guy,vihu2)<120 Then
PointObject vihu2,guy
MoveObject vihu2,2
EndIf

If CountCollisions(guy) Then i=i+1
If ObjectsOverlap(guy,vihu,2) Then i=i+1
If ObjectsOverlap(guy,vihu2,2) Then i=i+1

If i>1 Then
SetFont arial
ScreenGamma 140,0,0
ShowObject guy,OFF
CenterText 320,240,"You lose..."
Gosub lose
EndIf

If ObjectsOverlap(guy,stranger,2) Then g=g+1

If g>1 Then
SetFont arial
ScreenGamma 0,255,255
CenterText 320,240,"You win!!!"
Gosub win
EndIf

DrawScreen
Until EscapeKey()
'---------------------
lose:

DrawScreen
WaitKey
ClearKeys

Return
'---------------------
win:

DrawScreen
WaitKey
ClearKeys

Return
Lähettäkää kommenteja tästä (jokseenkin huonosta) pelistä. Olen varautunut pelkkiin haukkuihin. :geek:
Image
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Älä osu mappiin!!

Post by koodaaja »

Varaudu kovaan tykitykseen: huonojen asioiden lista:

-et käyttänyt paikallisia polkuja. meitä, jotka emme tallenna kaikkea oletuspolkuun, on monta.
-ei taulukoita tai tyyppejä vihuille. (toki se olisi kahta käytettäessä vähän turhaa, mutta esimerkissä sen pitäisi olla tehty selkeällä ja tehokkaalla tavalla)
-loppusubit ovat täsmälleen samanlaisia ja turhia, lisäksi kuoleman jälkeenkin pääsee liikkumaan.
-ei sisennyksiä.

Pistäisit edes projekteihin, tämä mikään esimerkki ole.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Älä osu mappiin!!

Post by phons »

Joo se clearkeys homma meni vähän puihin.
Image
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Älä osu mappiin!!

Post by Koodiapina »

Tämähän on hyvä ja toimiva esimerkki! Tästä on varmasti monelle, varsinkin aloittelijalle paljon apua. Koodi on sulavaa ja loogista, enkä virheitä löytänyt. Tälläsiä esimerkkejä vaan lisää ;)
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Älä osu mappiin!!

Post by phons »

En odottanut tätä. :?
Image
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Älä osu mappiin!!

Post by koodaaja »

Ensi kertaa testatessani huomasin pelin hidastuvan kummasti, ja vilkaistessani tuota äsken läpi löysin vian: setupcollisioneja loopin sisällä. Ei se alussa mitään tee, mutta pelaa vaikka viisi minuuttia testin vuoksi, kummasti alkaa pätkiä.
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Älä osu mappiin!!

Post by KillBurn »

Nyt niitä hukkuja:
Ei tämmöisiä. ei tästä paljoa apua ole kellekkään.Koodikin on alkeellista, vaikka aloittelijoille se sopii.
olisi tehnyt vaikka tyypeillä useita vihollisia jotka jahtaa, niin olisi ollut jo jonkinmoinen.
miksi noi mediat ohjattiin C/program... kansioon vaivalloista oli korjata toi linkki. :(
Sumu Games: Sam, Ur eye!
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Älä osu mappiin!!

Post by phons »

To KillBurn joo kato mul se tekee semmoisen errorin ku "Can't load object ...". :(
Image
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Älä osu mappiin!!

Post by CCE »

kato mul se tekee semmoisen errorin ku "Can't load object ...". :(
No varmasti tekeekin jos polku väärin. :D
Sen sijaan että kirjoittaisit absoluuttisen polun tyyliin "C:\Warez\Pr0n\" riittää että kirjoitat polun siitä lähtien mihin olet lähdekoodisi tallentanut.

Esim. jos lähdekoodisi on kansiossa "C:\Progam Files\CoolBasic\" ja lataat kuvan polusta "C:\Progam Files\CoolBasic\Media\guy.bmp" niin riittää että kirjoitat pelkästään "Media\guy.bmp".

Näin varmistat että ohjelma toimii samalla tavalla riippumatta mihin se on tallennettu, kunhan tarvittavat tiedostot ovat tallella.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Älä osu mappiin!!

Post by phons »

Niin, niin pistin sinne "Media\guy.bmp" mutta se marmatti sitä silti tai no jos ihan totta puhutaan niin se kelpuuttin sen "Media\guy.bmp":n muutaman kerran ja sitten ... se erro. :(
Image
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Älä osu mappiin!!

Post by koodaaja »

D44. Tallensit sen jonnekin, missä ei ollut alakansiota "Media", jonka sisällä olisi bittikartta "guy.bmp". Ennen tallentamista se toimii, koska oletuksena etsitään alakansiota "Media" ja sieltä bittikarttaa "guy.bmp" CB:n kansiosta, ja sieltähän moiset löytyvät.

Jälleen seuraa koodaajan monen monta kertaa toistettu ohjeistus. Pitänee tallentaa, että voi tulevaisuudessa vain copypasteta, kovin monta kertaa tämän olen jo joutunut selittämään.

Ensin teet kansion projektillesi. Parasta on toki nimetä se projektin mukaan. Tähän kansioon tallennat koodin ja myöhemmin .exen. Sitten teet siihen alakansion "Media" tai "Kuvat", "Images" tai ihan mitä huvittaa. Sinne sitten kaikki media/kuvat. (Jotkut tykkäävät tehdä omat alakansiot kuville, äänille ja tekstitiedostoille erikseen.)

Nyt sinun ei tarvitse kirjoittaa koodiisi muuta kuin "guy = LoadImage("Media\guy.bmp")", ja homma pelaa. Toki sinun pitää muuttaa alakansion nimi vastaamaan sitä minkä teit sekä lisätä sinne jotain ladattavaa.

Sitten, kun projekti alkaa olla julkaisukunnossa, siirrät lähdekoodin (.cb -tiedosto) muualle talteen, kirjoitat readmen jossa selität kaikkea jännää (ohjeet ja tekijät) ja laitat sen .exen keralla pelin kansioon. Sitten koko roska .rariksi ja upit nettiin. Paras tarkistaa, mieluummin toisella koneella, että lataus ja peli toimivat.

Ja sitten foorumeille jakamaan linkkiä ja ylistämään omaa projektia.
Post Reply