Pikku pelit

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Pikku pelit

Post by Ilkka »

Tein tylsissäni tällaisen zombinmättöpelin. Tapa zombeja niin kauan kuin oot hengissä. Liikkuminen WASD, tähtäys ja ammunta hiirellä. Käytöin pelissä cbn oletus grafiikkaa, koska en jaksanut tehdä grafiikoita itse. Pelikentälle ilmestyy vähän ajan välein healttipakkauksia, jotka on tatteja ja joista saa 10-30 hpta lisää. Kuinka monta zombia sinä tapat? :lol:

Code: Select all

    FrameLimit 60
    SCREEN 400,350

    Type AMMUS
        Field obj
    EndType
    Type ZOMBI
        Field obj
        Field x
        Field y
        Field hp
    EndType
    Type HEALTTI
        Field obj
        Field hpplussa
    EndType

    FrameLimit 40 'rajoita nopeutta

    kursori=LoadObject("media\target.bmp")
    ukko=LoadObject("Media\soldier.bmp",72)
    zomb1=LoadObject("Media\guy.bmp",72)
    pati=LoadObject("Media\bullet.bmp")
    hetti = LoadObject("Media\tatti.bmp")
    ShowObject pati,OFF
    ShowObject zomb1,OFF
    ShowObject hetti,OFF

    hp = 200
    spawn = 4
    score = 0
    späwn = 0
    Repeat

        ShowMouse OFF
        PositionObject kursori, MouseWX(), MouseWY()

        PointObject ukko, kursori

        If KeyDown(17) Then TranslateObject ukko, 0, 3
        If KeyDown(31) Then TranslateObject ukko, 0, -3
        If KeyDown(30) Then TranslateObject ukko, -3, 0
        If KeyDown(32) Then TranslateObject ukko, 3, 0

        'Ammu-systeemi. Vain, jos ase on ladattu
        If MouseDown(1) And reload=0 Then   
            luoti.AMMUS = New(AMMUS) 'luo uusi ammus
            luoti\obj=CloneObject(pati) 'tee klooni
            'asetetaan pati samaan paikkaan
            CloneObjectPosition luoti\obj,ukko               
            'käännetään pati samaan suuntaan
            RotateObject luoti\obj, ObjectAngle(ukko)+Rand(-2,2)      
            reload=5 'aseen lataus       
        EndIf
        'päivitä aseen lataaminen
        If reload>0 Then reload=reload-1

        If späwn > 0 Then
            b.HEALTTI = New(HEALTTI)
            b\obj = CloneObject(hetti)
            b\hpplussa = Rand(10, 30)
            PositionObject b\obj, Rand(-200,200), Rand(-175,175)
            späwn - 1
        EndIf
           

        If Spawn > 0 Then
            z.ZOMBI = New(ZOMBI)
            z\obj = CloneObject(zomb1)
            z\x = Rand(-1000,1000)
            z\y = Rand(-1000,1000)
            z\hp = 3
            PositionObject z\obj, z\x, z\y
            spawn - 1
        EndIf
       
        For z.ZOMBI = Each ZOMBI

            If z\x < 200 Then z\x = Rand(-1000,1000)
            If z\x > 200 Then z\x = Rand(-1000,1000)
       
            PointObject z\obj, ukko
            MoveObject z\obj, 2
       
       
            If ObjectsOverlap(z\obj, ukko) Then hp - 1
       
       
        If Timer()>spawneri+2500 Then
            spawn + 1
            spawneri = Timer()
           
        EndIf 
        If Timer()>späwneri+10000 Then
            späwn + 1
            späwneri = Timer()
           
        EndIf
       
        For f.HEALTTI = Each HEALTTI
       
            If ObjectsOverlap(ukko, f\obj) Then hp + f\hpplussa : DeleteObject f\obj : Delete f
       
        Next f
           
       
        For luoti.AMMUS = Each AMMUS
           
            MoveObject luoti\obj,2
            If ObjectsOverlap(luoti\obj, z\obj) Then z\hp - 1 : Delete luoti : DeleteObject luoti\obj
           
        Next luoti
       
        If z\hp < 1 Then
            DeleteObject z\obj
            Delete z
            score + 1
            z.ZOMBI = New(ZOMBI)
            z\obj = CloneObject(zomb1)
            z\x = Rand(-1000,1000)
            z\y = Rand(-1000,1000)
            If z\x < 200 Then z\x = Rand(-1000,1000)
            If z\x > 200 Then z\x = Rand(-1000,1000)
            z\hp = 3
            PositionObject z\obj, z\x, z\y
        EndIf
       
       
        Next z
       
        If hp < 0 Then Goto loppu
       
        Text 0,0,"HP: " +hp+ "   Tapot: "+score
        SetWindow ""+FPS()
       
        DrawScreen
    Forever

    loppu:

    scroll = 200

    Repeat
    For z.ZOMBI = Each ZOMBI
        ShowObject z\obj, OFF
        ShowObject ukko, OFF
        ShowObject kursori, OFF
    Next z
        Text 100,160,"Sait "+score+" tappoa!"
       
         scroll-1
         
         If scroll < 0 Then End
       
      DrawScreen
    Forever



(Itellä meni nopeella testillä 70 tappoa.)
Image
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Pikku pelit

Post by Jonez »

Sain 48. Kannattaa näinkin pienissä peleissä huolehtia siitä muistinkäytöstä. Eli olisi ihan hyvä jos ne ruudun ulkopuolelle menevät luodit tuhottaisiin, voi ruveta peli nykimään jos pelaa hieman pidempään.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Sam
Newcomer
Posts: 4
Joined: Fri Feb 04, 2011 5:05 pm

Re: Pikku pelit

Post by Sam »

Jonez wrote:Sain 48. Kannattaa näinkin pienissä peleissä huolehtia siitä muistinkäytöstä. Eli olisi ihan hyvä jos ne ruudun ulkopuolelle menevät luodit tuhottaisiin, voi ruveta peli nykimään jos pelaa hieman pidempään.
Miten on mahdollista että minäkin sain 48 tappoa...?
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Pikku pelit

Post by Koodiapina »

66 tappoa. Melko tylsä ja mielikuvitukseton peli.

Huomasin muuten, että yrität tällaisella koodilla siirtää luodun zombin sattumanvaraiseen paikkaan:

Code: Select all

z\x = Rand(-1000,1000)
z\y = Rand(-1000,1000)
PositionObject z\obj, z\x, z\y
Se on kuitenkin huono ratkaisu, koska tällöin on pieni mahdollisuus, että zombi ilmestyy yhtäkkiä keskelle näkökenttää typerän näköisesti. Itse toteuttaisin asian näin:

Code: Select all

TurnObject z\obj,Rand(359)
MoveObject z\obj,Rand(x,y) // <- En jaksa nyt kokeilla mitkä arvot olisivat optimaalisimmat, joten merkkasin parametreja x:llä ja y:llä. Satunnaislukugeneroijan antaman pienimmän mahdollisimman arvon täytyy olla enemmän kuin [sellaisen suorakulmaisen kolmion hypotenuusa, jonka kateettien pituudet ovat pelihahmospriten leveys ja korkeus] summattuna [sellaisen suorakulmaisen kolmion hypotenuusalla, jonka kateettien pituudet ovat näkökentän leveys ja korkeus].
Sam wrote:Miten on mahdollista että minäkin sain 48 tappoa...?
Ongelma on ratkaistavissa Grandi-logiikalla:

Code: Select all

(<Sain 48 tappoa>,<Sait 48 tappoa>) =>
((<Sain>,<Sait>),(<48 tappoa>,<48 tappoa>)) =>
((<Minäkin sain>,<Sinäkin sait>),<48 tappoa>) =>
(<Minäkin sain 48 tappoa>,<Sinäkin sait 48 tappoa>)
Go there-------------->

Pikku pelit

Post by Go there--------------> »

Hei! keksin tällaisen virtuaali lemmikin. Noh... Sen keksii kukavaan ja versioni onkin vasta BETA 0.0000000000000000001 Ja olen vasta aloittelija... :oops:


Code: Select all

Global kunto,voimat,äly,tyhmyys,nälkä,ilo,aika
kunto=100
voimat=0
äly=0
tyhmyys=100
nälkä=0
ilo=100
aika=0

alku:
Repeat 
If kunto < 0 Then 
kunto=0
EndIf 
If kunto > 100 Then 
kunto = 100
EndIf 
If voimat < 0 Then 
voimat = 0
EndIf 
If voimat > 100 Then 
voimat = 100
EndIf 
If äly > 100 Then 
äly = 100
EndIf 
If äly < 0 Then 
äly = 0
EndIf 
If tyhmyys > 100 Then 
tyhmyys = 100
EndIf 
If tyhmyys < 0 Then 
tyhmyys = 0
EndIf 
If nälkä < 0 Then 
nälkä = 0
EndIf 
If nälkä > 100 Then 
nälkä = 100
EndIf 
If ilo > 100 Then 
ilo = 100
EndIf 
If ilo < 0 Then 
ilo = 0
EndIf 
Mess$ = Input ("Komento: ")
Text 0,20, "Pänttää"
Text 0,40, "Voimistele"
Text 0,60, "Syö"
Text 0,80, "Pidä hauskaa"
Text 200,0, "Kunto: " +kunto
Text 200,20, "Voimat: " +voimat
Text 200,40, "Äly: " +äly
Text 200,60, "Tyhmyys: " +tyhmyys
Text 200,80, "Nälkä: " +nälkä
Text 200,100, "Ilo: " +ilo
DrawScreen
aika = aika+1
If aika = 200 Then 
kunto = kunto-1
voimat = voimat-1
äly = äly-1
tyhmyys = tyhmyys+1
nälkä = nälkä+1
ilo = ilo-1
aika = 0
EndIf  
Until KeyHit(28)
Repeat 
If Mess$ = "Pänttää" Then 
Text 0,20, "Päntätään..."
äly = äly+10
tyhmyys = tyhmyys-10
nälkä = nälkä+5
DrawScreen
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Voimistele" Then 
Text 0,20, "Voimistellaan..."
kunto = kunto+10
voimat = voimat+5
nälkä = nälkä-15
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Syö" Then 
Text 0,20, "Syödään..."
nälkä = nälkä-5
ilo = ilo+1
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Pidä hauskaa" Then  
Text 0,20, "Pidetään hauskaa..."
ilo = ilo+5
kunto = kunto-5
voimat = voimat-2
nälkä = nälkä+1
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
Goto alku
Forever 
Kommenttia saa antaa
Go there-------------------->

Re: Pikku pelit

Post by Go there--------------------> »

Huomasin pahan virheen nyt se on korjattu... Tässä korjattu versio:

Code: Select all

Global kunto,voimat,äly,tyhmyys,nälkä,ilo,aika
kunto=100
voimat=0
äly=0
tyhmyys=100
nälkä=0
ilo=100
aika=0

alku:
Repeat 
If kunto < 0 Then 
kunto=0
EndIf 
If kunto > 100 Then 
kunto = 100
EndIf 
If voimat < 0 Then 
voimat = 0
EndIf 
If voimat > 100 Then 
voimat = 100
EndIf 
If äly > 100 Then 
äly = 100
EndIf 
If äly < 0 Then 
äly = 0
EndIf 
If tyhmyys > 100 Then 
tyhmyys = 100
EndIf 
If tyhmyys < 0 Then 
tyhmyys = 0
EndIf 
If nälkä < 0 Then 
nälkä = 0
EndIf 
If nälkä > 100 Then 
nälkä = 100
EndIf 
If ilo > 100 Then 
ilo = 100
EndIf 
If ilo < 0 Then 
ilo = 0
EndIf 
Mess$ = Input ("Komento: ")
Text 0,20, "Pänttää"
Text 0,40, "Voimistele"
Text 0,60, "Syö"
Text 0,80, "Pidä hauskaa"
Text 200,0, "Kunto: " +kunto
Text 200,20, "Voimat: " +voimat
Text 200,40, "Äly: " +äly
Text 200,60, "Tyhmyys: " +tyhmyys
Text 200,80, "Nälkä: " +nälkä
Text 200,100, "Ilo: " +ilo
DrawScreen
aika = aika+1
If aika = 200 Then 
kunto = kunto-1
voimat = voimat-1
äly = äly-1
tyhmyys = tyhmyys+1
nälkä = nälkä+1
ilo = ilo-1
aika = 0
EndIf 
Until KeyHit(28)
Repeat 
If Mess$ = "Pänttää" Then 
Text 0,20, "Päntätään..."
äly = äly+10
tyhmyys = tyhmyys-10
nälkä = nälkä+5
DrawScreen
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Voimistele" Then 
Text 0,20, "Voimistellaan..."
kunto = kunto+10
voimat = voimat+5
nälkä = nälkä+15
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Syö" Then 
Text 0,20, "Syödään..."
nälkä = nälkä-5
ilo = ilo+1
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
If Mess$ = "Pidä hauskaa" Then 
Text 0,20, "Pidetään hauskaa..."
ilo = ilo+5
kunto = kunto-5
voimat = voimat-2
nälkä = nälkä+1
DrawScreen 
Wait 2000
CloseInput 
Goto alku
EndIf 
Goto alku
Forever 
Kommenttia kiitos! :)
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Pikku pelit

Post by esa94 »

Go there--------------------> wrote: Kommenttia kiitos! :)
Tee tunnus ja käytä Code-tageja.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Pikku pelit

Post by koodaaja »

Ei hullumpi alku. Sisältöä ei ole vielä valtavasti, mutta aika alussahan projekti taitaa ollakin. Komentotekstin voisit käyttää lower()-komennon kautta ja verrata pienellä kirjoitettuun (...If lower(Mess$)="pänttää" then...), jotta pelaajan ei tarvitsisi miettiä isoja ja pieniä kirjaimia.

Editoin viesteihisi code-tagit, koska et vieraana sitä itse voi jälkikäteen tehdä, mutta laita tulevaisuudessa itse koodisi

Code: Select all

//koodia [/code ] -tagien väliin (välit toki pois, vain code ja /code hakasulkeissa) - eikä siitä rekisteröitymisestäkään haittaa ole :)
kemp250
Newcomer
Posts: 24
Joined: Fri Nov 14, 2008 5:39 pm
Location: En voi kertoa. He voivat kuunnella meitä.

Re: Pikku pelit

Post by kemp250 »

Ihan vinkiksi, yhden komennon If-juttuja ei kannata laittaa monelle riville - se vie tilaa ja aikaa. Kannattaa tehdä näin:

Code: Select all

If kunto < 0 Then kunto= 0        
If kunto > 100 Then kunto = 100
If voimat < 0 Then voimat = 0        
If voimat > 100 Then voimat = 100        
If äly > 100 Then äly = 100
If äly < 0 Then äly = 0
If tyhmyys > 100 Then tyhmyys = 100       
If tyhmyys < 0 Then tyhmyys = 0
If nälkä < 0 Then nälkä = 0
If nälkä > 100 Then nälkä = 100
If ilo > 100 Then ilo = 100
If ilo < 0 Then ilo = 0
Näyttääkin vähän siistimmältä.
EDIT:

Ai niin, ja siinä zombipelissä sain 93 pojoa.

"Working" for GameTailors.

Projektit:
Tower Climber, 23%
Avaruusjalkkisjuttu jossa ei ole jalkoja eikä palloja, 19%

I have been using coolbasic many years. I just fail a lot.
User avatar
ukkeli
Active Member
Posts: 123
Joined: Thu Jan 28, 2010 9:01 pm

Re: Pikku pelit

Post by ukkeli »

No tuohan on ihan hyvä virtuaalilemmikki! Mutta. Kannattaa pistää enemmän komentoja. Sitten, tuskin lihakset katoaa parissa sekuntissa? Ja ei kai nälkä noin nopeasti tule? Mutta mitä syödään, Miten voin syödä 50 kertaa peräkkäin? No se oli kuitenkin hyvä että arvot ei menny miinus lukemiin... Jatka kehitystä. Lisää komentoja, kauppa(Ruoka ostot, sun muut.) ja Raha. Rahaa tienattaisiin työllä jne. Sitten tuota voisi ehkä pelata ihan ilokseen :D
...
User avatar
Execute
Active Member
Posts: 110
Joined: Fri Feb 11, 2011 6:41 pm

Re: Pikku pelit

Post by Execute »

Jaa-a. Vai että tällaista...
Last edited by Execute on Sun Nov 06, 2011 6:51 pm, edited 1 time in total.
SpaceCraft on kokopitkä peli! Nyt ladattavissa! Tsekkaa!
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Pikku pelit

Post by Feuer »

Miksi yhden rivin iffeihin pitäisi laittaa EndIf? O.o
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Pikku pelit

Post by Awaclus »

Execute wrote:Kannattaa muistaa endif - komennot, joita ilman et selviä kuivilla.
Eipäs kannata. Miksi ihmeessä pitäisi kirjoittaa kolme riviä kun yhdelläkin pärjää?
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Pikku pelit

Post by Koodiapina »

Niinpä. Kaikenhan saa helposti tungettua yhdelle if-riville:

Code: Select all

If 1 Then r# = 1 Then FrameLimit 40 Then SetFont LoadFont("courier new",24) Then Repeat Then r = r + Float((r < 3)*UpKey())/20 - Float((r > 1)*DownKey())/20 Then k = (Timer()-p)/30 then s = (Abs(Abs(150+Sin(k)*100) - Abs(150+Sin(-k)*30)) < 1) then Color 255,(s=0)*255,(s=0)*255 Then Circle 185,147,30,0 then Color 255,255,255 Then CenterText 200,150,Chr(Int(Distance(200+Cos(k)*50,150+Sin(k)*50,200+Cos(-k)*30,150+Sin(-k)*30)/10 Mod 25)+63) Then CenterText 200+Cos(-k)*50*r,150+Sin(-k)*50,Chr((94+24*(Sin(-k) <= 0))*(s=0)+120*s) then CenterText 200+Cos(k)*70,150+Sin(k)*70,Chr((94+24*(Sin(k) <= 0))*(s=0)+121*s) then While s then DrawScreen then Wait 1000 then p = p + 950 then s = 0 Then Wend then DrawScreen then Forever
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Pikku pelit

Post by Wingman »

Tein tässä uuden koneen saatuani tämmöisen perus hyppelypelin, space hyppää ja shift boostaa..

Code: Select all

SCREEN 400,300,0,1
SCREEN 200,150,0,2
ukko=MakeImage(6,4)
DrawToImage ukko
	'Dot 1,0
	Dot 0,1
	Dot 1,1
	Dot 2,1
	Dot 1,2
	Dot 0,3
	Dot 2,3
	'Dot 4,0
	Dot 3,1
	Dot 4,1
	Dot 5,1
	Dot 4,2
	Dot 4,3
DrawToScreen
Type BOXIT	
	Field x
	Field spe
	Field le
	Field id
EndType 
SaveImage ukko,"ukko.png"
ukko1=LoadAnimImage("ukko.png",3,4,0,2)
askel=100
x=50
y#=120
x2#=51
y2#=117
yvel#=0
sped#=4
b.BOXIT=New(BOXIT)
b\x=0
b\spe=spe
b\le=200
b\id=boxis+1
boxis+1
boxialla=1
pisteet=0
matka=0
f=OpenToEdit("Hyppelyscoret.txt")
rpist=ReadInt(f)
rmatk=ReadInt(f)
rboos=ReadInt(f)
CloseFile f
'FrameLimit 10
SAFEEXIT OFF 
h=10 
rn1#=1
rn2#=1.5
rn3#=2
rn11#=CurveValue(rn1,rn11,20)
rn22#=CurveValue(rn2,rn22,20)
rn33#=CurveValue(rn3,rn33,20)
Repeat
	If matka>m+2000 Then 
		rn1=Rnd(1,2)
		rn2=Rnd(1,2)
		rn3=Rnd(1,2)
		m=matka
		x=x+1
		sped=sped+0.5
	EndIf 
	If y>121 Then 
		rn11#=CurveValue(0,rn11,20)
		rn22#=CurveValue(0,rn22,20)
		rn33#=CurveValue(0,rn33,20)
		te=0
	Else 
		rn11#=CurveValue(rn1,rn11,20)
		rn22#=CurveValue(rn2,rn22,20)
		rn33#=CurveValue(rn3,rn33,20)
	EndIf 
	For i=0 To 120 
		Color i*rn11,i*rn22,i*rn33
		Line 0,120-i,200,120-i
	Next i
	Color 60*rn11,60*rn22,60*rn33
	Line 0,121,200,121
	For b.BOXIT=Each BOXIT
		Color 80*rn11,80*rn22,80*rn33
		
		Box b\x,121,b\le,h
		If y<121 Then 
			Color 255,170,0
		Else 
			Color 120*rn11,60*rn22,1*rn33
		EndIf 
		Line b\x,121,b\x+b\le-1,121
		Line b\x,121+h,b\x+b\le-1,121+h
		Line b\x,121,b\x,121+h
		Line b\x+b\le,121,b\x+b\le,121+h
		b\x-b\spe
		b\spe=spe
		If b\x+b\le<200 And boxis<2 Then 
			b2.BOXIT=New(BOXIT)
			b2\x=300
			b2\spe=spe
			b2\le=Rand(10,60)*10
			b2\id=boxis+1
			boxis+1
		EndIf 
		If b\x+b\le<0 Then 
			Delete b
			boxis-1
			If y<120 Then 
				pisteet+1	
			EndIf 
		EndIf 
	Next b
	Lock 
		pix=GetPixel2(x,y+1)
	Unlock 
	'Text 0,0,pix
	If y=120 Then 
		hypyt=0
		If pix=-22016 Then 
			boxialla=1
		Else 
			boxialla=0
		EndIf 
	EndIf 
	yvel=yvel-0.092
	If KeyHit(57) And boxialla=1 And hypyt<2 Then 
		yvel=2
		hypyt+1
	EndIf 
	If KeyHit(19) Then 
		rn1#=1
		rn2#=1.5
		rn3#=2
		y=100
		x=50
		yvel=0
		x2#=51
		y2#=97
		boxialla=1
		te=200
		sped=4
		If pisteet>rpist Then 
			rpist=pisteet
		EndIf 
		If matka>rmatk Then 
			rmatk=matka
		EndIf 
		pisteet=0
		matka=0
		m=matka
		If boostiaika>rboos Then 
			rboos=boostiaika
		EndIf 
		boostiaika=0
	EndIf 
	Color 1,1,1
	Text 0,0,"Score          : "+pisteet
	Text 0,12,"Meters         : "+matka/20+"m"
	Text 0,24,"Overall boost  : "+boostiaika+"s" 
	Text 0,36,"Best score     : "+rpist
	Text 0,48,"Best d"+"istance  : "+rmatk/20+"m"
	Text 0,60,"Best boost t"+"ime: "+rboos+"s"
	Color 255,170,0
	If te>0 Then 
		CenterText 100,90,"GO!"
		te-3
	EndIf 
	If y>150 Then 
		CenterText 100,90,"R t"+"o try again"
	EndIf 
	If y<150 Then 
		matka=matka+spe
		y-yvel
	EndIf 
	If y>120 And boxialla=1 Then 
		y=120
		yvel=0
	EndIf 
	If Timer()>t+askel Then 
		If y=120 Then 
			f=f+1
		Else 	
			f=0
		EndIf 
		t=Timer()
	EndIf 
	If KeyDown(42) Then 
		spe=sped+sped/2
		If Timer()>pa+1000 Then 
			boostiaika+1
			pa=Timer()
		EndIf
		x2=CurveValue(x-1,x2,8)
	Else 
		spe=sped
		x2=CurveValue(x+1,x2,3)
	EndIf 
	Color 255,170,0
	y2=CurveValue(y-4,y2,8)
	If y2>y-3 Then y2=y-3
	Dot x2,y2
	If f>1 Then f=0
	DrawImage ukko1,x,y-3,f
	DrawScreen 
Until KeyHit(1)
f=OpenToWrite("hyppelyscoret.txt")
WriteInt f,rpist
WriteInt f,rmatk
WriteInt f,rboos
CloseFile f
DeleteFile "ukko.png"
End 
P.S. uuden pistemäärän saadessa pitää vielä aloittaa uusi 'yritys' ja sen jälkeen painaa 'esc'-nappia jotta pisteet tallentuvat
EDIT:

Muokkasin vähän bugeja pois ja lisäsin tuplahypyn. Peli myös vaikeutuu.

- - - -
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Pikku pelit

Post by esa94 »

Zombo Tiätsä Peli muokattuna käyttämään defaulttimediaa (KORJATTU) ja olemaan sadistinen.

Code: Select all

SCREEN 800, 600
SAFEEXIT OFF

'Vaikeustaso (100 on jo vaikea, nostaminen helpottaa)
'LEVINC on vaikeustason muutosnopeus
Dim LEVEL As Float
LEVEL = 50.0
Const LEVINC = 0.5

'Liikkeen moninkertaistus (Pikseliä/frame)
Const MVMUL = 8
Const ZMVMUL = 6
Const DIACOM = 0.707106781 'Vinottaisliikkeen kompensointii ( 1 / sqrt( 2 ) )

'Säädä tähän 1 ja kärsi
Const EPILEPSY = 1

'Cooldown ja patien dama ja nopeus
Const CLDOWN = 10
Const BLTDMG = 25
Const BLTSPD = 15
Const CLIPSZ = 16
Const RLDTIEM = 60

'Pisteitä per osuma
Const PNTAMO = 5

'Zombien spawnietäisyys
Const MINRNG = 64
Const MAXRNG = 256

'Zombien vaurio ja kesto
Const ZOMDMG = 2.0
Const ZOMHEA = 10.0

'Ruudun rajat
Const _RBORD = 378
Const _LBORD = -378
Const _UBORD = -278
Const _DBORD = 278

FrameLimit 40
ClsColor 255, 255, 255 'Iloinen valkoinen mualima
Smooth2D ON

Type Bullet 'Pum ja sillee

Field obj As Integer
Field dmg As Float
Field spd As Float

EndType

Type Zombie 'Zombejaaaaaaaaa

Field obj As Integer
Field hp As Float
Field dmg As Float

EndType

Dim HP, _upmv, _sdmv As Float
Global MasterZombo As Integer
Dim Soldier, i, _pts, _x, _y, _fix, _fix2, _fix3, _fix4, _zsp, _cld, _clip, _empty As Integer
Dim iz.Zombie, z.Zombie, b.Bullet, pz.Bullet
Soldier = LoadObject( "media/soldier.bmp", 72 )
MasterZombo = LoadObject( "media/guy.bmp", 72 )
MasterBullet = LoadObject( "media/bullet.bmp", 72 )
ShowObject MasterZombo, OFF
ShowObject MasterBullet, OFF

_clip = CLIPSZ
_zsp = 0
_rld = 0
_pts = 0
HP = 100.0

Repeat
	
	_upmv = ( KeyDown( cbKeyD ) - KeyDown( cbKeyA ) )
	_sdmv = ( KeyDown( cbKeyW ) - KeyDown( cbKeyS ) )
	
	If _upmv > 0 And _sdmv > 0
	
		'Molemmat näppäimet on painettu pohjaan
		'Täten molempiin voidaan vain sijoittaa uusi arvo
		_upmv = DIACOM
		_sdmv = DIACOM
	
	EndIf
	
	'Hiiriohjaus + mitälie
	TranslateObject Soldier, _upmv * MVMUL, _sdmv * MVMUL
	RotateObject Soldier, -GetAngle( ObjectX( Soldier ), ObjectY( Soldier ), MouseWX(), MouseWY() )
	
	_x = ObjectX( Soldier )
	_y = ObjectY( Soldier )
	
	DrawGame
	
	'Jostain syystä vaatii tämän
	_fix = _LBORD
	If _x < _LBORD Then
		PositionObject Soldier, _fix, _y
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _y < _UBORD Then
		PositionObject Soldier, _x, _UBORD
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _x > _RBORD Then
		PositionObject Soldier, _RBORD, _y
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _y > _DBORD Then
		PositionObject Soldier, _x, _DBORD
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	_zsp = _zsp - 1
	If _zsp =< 0 Then   		
		_zsp = Int( LEVEL )
		LEVEL = Max(LEVEL - LEVINC, 0)
		SpawnZombo()	
	EndIf
	
	_cld = _cld - 1

	If KeyHit( cbKeyR ) Then
	
		_clip = 0
		_cld = 0
		_empty = RLDTIEM
	
	EndIf
	
	If _clip > 0 And MouseDown( 1 ) And _cld =< 0 Then

		_cld = CLDOWN
		_clip = _clip - 1
		b.Bullet = New( Bullet )
		b\obj = CloneObject( MasterBullet )
		b\dmg = BLTDMG
		b\spd = BLTSPD
		CloneObjectPosition b\obj, Soldier
		CloneObjectOrientation b\obj, Soldier

	ElseIf _clip =< 0 Then
		
		If _empty =< 0 Then
	
			_clip = CLIPSZ
			_empty = RLDTIEM

		Else
			_empty = _empty - 1
		EndIf
	
	EndIf
	
	For iz.Zombie = Each Zombie
		
		PointObject iz\obj, Soldier
		MoveObject iz\obj, ZMVMUL
		Color cbBlack
		
		If ObjectsOverlap( iz\obj, Soldier, 2 ) Then
			'EPILEPSIA
			If EPILEPSY Then ClsColor Sin( Timer() + Rand( 360 ) ), Sin( Timer() + Rand( 360 ) ), Sin( Timer() + Rand( 360 ) )
			HP = HP - iz\dmg
		EndIf
		
		For pz.Bullet = Each Bullet
			
			If ObjectsOverlap( pz\obj, iz\obj, 2 ) Then
				_pts = _pts + PNTAMO
				iz\hp = iz\hp - pz\dmg
				DeleteObject pz\obj
				Delete pz
			EndIf
		
		Next pz
		
		If iz\hp =< 0 Then
			DeleteObject iz\obj
			Delete iz
		EndIf
		
	Next iz
	
	For pz.Bullet = Each Bullet
		
		MoveObject pz\obj, pz\spd
		
		_x = ObjectX( pz\obj )
		_y = ObjectY( pz\obj )
		
		_fix = _LBORD
		_fix2 = _UBORD
		_fix3 = _RBORD
		_fix4 = _DBORD
		If ( _x < _fix ) Or ( _y < _fix2 ) Or ( _x > _fix3 ) Or ( _y > _fix4 ) Then
			DeleteObject pz\obj
			Delete pz
		EndIf
	
	Next pz

	SetWindow "HP: " + HP + " Panokset: " + _clip + " Pisteet: " + _pts + " Seuraava: " + _zsp
	
	DrawScreen
	ClsColor 255, 255, 255
	
	If HP < 0 Then MakeError "Hävisit, lopulliset pisteet " + _pts

Forever

Function SpawnZombo()
	
	z.Zombie = New( Zombie )
	z\obj = CloneObject( MasterZombo )
	z\dmg = ZOMDMG
	z\hp = ZOMHEA
	_fix = _UBORD
	_fix2 = _LBORD
	Select Rand( 0, 3 )
		
		Case 0
			PositionObject z\obj, _RBORD + Rand( MINRNG, MAXRNG ), Rand( _fix, _DBORD )      
		Case 1
			PositionObject z\obj, _LBORD - Rand( MINRNG, MAXRNG ), Rand( _fix, _DBORD )      
		Case 2
			PositionObject z\obj, Rand( _fix2, _RBORD ), _DBORD + Rand( MINRNG, MAXRNG )      
		Case 3
			PositionObject z\obj, Rand( _fix2, _RBORD ), _UBORD - Rand( MINRNG, MAXRNG )         
		
	EndSelect
	ShowObject z\obj, ON   

EndFunction 
Last edited by esa94 on Sun May 15, 2011 5:58 pm, edited 3 times in total.
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Pikku pelit

Post by TheDuck »

esa94 wrote:Zombo Tiätsä Peli muokattuna käyttämään defaulttimediaa ja olemaan sadistinen.

Code: Select all

SCREEN 800, 600
SAFEEXIT OFF

'Vaikeustaso (100 on jo vaikea, nostaminen helpottaa)
'LEVINC on vaikeustason muutosnopeus
Dim LEVEL As Float
LEVEL = 50.0
Const LEVINC = 0.5

'Liikkeen moninkertaistus (Pikseliä/frame)
Const MVMUL = 8
Const ZMVMUL = 6
Const DIACOM = 0.707106781 'Vinottaisliikkeen kompensointii ( 1 / sqrt( 2 ) )

'Säädä tähän 1 ja kärsi
Const EPILEPSY = 1

'Cooldown ja patien dama ja nopeus
Const CLDOWN = 10
Const BLTDMG = 25
Const BLTSPD = 15
Const CLIPSZ = 16
Const RLDTIEM = 60

'Pisteitä per osuma
Const PNTAMO = 5

'Zombien spawnietäisyys
Const MINRNG = 64
Const MAXRNG = 256

'Zombien vaurio ja kesto
Const ZOMDMG = 2.0
Const ZOMHEA = 10.0

'Ruudun rajat
Const _RBORD = 378
Const _LBORD = -378
Const _UBORD = -278
Const _DBORD = 278

FrameLimit 40
ClsColor 255, 255, 255 'Iloinen valkoinen mualima
Smooth2D ON

Type Bullet 'Pum ja sillee

Field obj As Integer
Field dmg As Float
Field spd As Float

EndType

Type Zombie 'Zombejaaaaaaaaa

Field obj As Integer
Field hp As Float
Field dmg As Float

EndType

Dim HP, _upmv, _sdmv As Float
Global MasterZombo As Integer
Dim Soldier, i, _pts, _x, _y, _fix, _fix2, _fix3, _fix4, _zsp, _cld, _clip, _empty As Integer
Dim iz.Zombie, z.Zombie, b.Bullet, pz.Bullet
Soldier = LoadObject( "media/soldier.png", 72 )
MasterZombo = LoadObject( "media/zombie.png", 72 )
MasterBullet = LoadObject( "media/bullet.png", 72 )
ShowObject MasterZombo, OFF
ShowObject MasterBullet, OFF

_clip = CLIPSZ
_zsp = 0
_rld = 0
_pts = 0
HP = 100.0

Repeat
	
	_upmv = ( KeyDown( cbKeyD ) - KeyDown( cbKeyA ) )
	_sdmv = ( KeyDown( cbKeyW ) - KeyDown( cbKeyS ) )
	
	If _upmv > 0 And _sdmv > 0
	
		'Molemmat näppäimet on painettu pohjaan
		'Täten molempiin voidaan vain sijoittaa uusi arvo
		_upmv = DIACOM
		_sdmv = DIACOM
	
	EndIf
	
	'Hiiriohjaus + mitälie
	TranslateObject Soldier, _upmv * MVMUL, _sdmv * MVMUL
	RotateObject Soldier, -GetAngle( ObjectX( Soldier ), ObjectY( Soldier ), MouseWX(), MouseWY() )
	
	_x = ObjectX( Soldier )
	_y = ObjectY( Soldier )
	
	DrawGame
	
	'Jostain syystä vaatii tämän
	_fix = _LBORD
	If _x < _LBORD Then
		PositionObject Soldier, _fix, _y
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _y < _UBORD Then
		PositionObject Soldier, _x, _UBORD
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _x > _RBORD Then
		PositionObject Soldier, _RBORD, _y
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	If _y > _DBORD Then
		PositionObject Soldier, _x, _DBORD
		_x = ObjectX( Soldier )
		_y = ObjectY( Soldier )
	EndIf
	
	_zsp = _zsp - 1
	If _zsp =< 0 Then   		
		_zsp = Int( LEVEL )
		LEVEL = Max(LEVEL - LEVINC, 0)
		SpawnZombo()	
	EndIf
	
	_cld = _cld - 1

	If KeyHit( cbKeyR ) Then
	
		_clip = 0
		_cld = 0
		_empty = RLDTIEM
	
	EndIf
	
	If _clip > 0 And MouseDown( 1 ) And _cld =< 0 Then

		_cld = CLDOWN
		_clip = _clip - 1
		b.Bullet = New( Bullet )
		b\obj = CloneObject( MasterBullet )
		b\dmg = BLTDMG
		b\spd = BLTSPD
		CloneObjectPosition b\obj, Soldier
		CloneObjectOrientation b\obj, Soldier

	ElseIf _clip =< 0 Then
		
		If _empty =< 0 Then
	
			_clip = CLIPSZ
			_empty = RLDTIEM

		Else
			_empty = _empty - 1
		EndIf
	
	EndIf
	
	For iz.Zombie = Each Zombie
		
		PointObject iz\obj, Soldier
		MoveObject iz\obj, ZMVMUL
		Color cbBlack
		
		If ObjectsOverlap( iz\obj, Soldier, 2 ) Then
			'EPILEPSIA
			If EPILEPSY Then ClsColor Sin( Timer() + Rand( 360 ) ), Sin( Timer() + Rand( 360 ) ), Sin( Timer() + Rand( 360 ) )
			HP = HP - iz\dmg
		EndIf
		
		For pz.Bullet = Each Bullet
			
			If ObjectsOverlap( pz\obj, iz\obj, 2 ) Then
				_pts = _pts + PNTAMO
				iz\hp = iz\hp - pz\dmg
				DeleteObject pz\obj
				Delete pz
			EndIf
		
		Next pz
		
		If iz\hp =< 0 Then
			DeleteObject iz\obj
			Delete iz
		EndIf
		
	Next iz
	
	For pz.Bullet = Each Bullet
		
		MoveObject pz\obj, pz\spd
		
		_x = ObjectX( pz\obj )
		_y = ObjectY( pz\obj )
		
		_fix = _LBORD
		_fix2 = _UBORD
		_fix3 = _RBORD
		_fix4 = _DBORD
		If ( _x < _fix ) Or ( _y < _fix2 ) Or ( _x > _fix3 ) Or ( _y > _fix4 ) Then
			DeleteObject pz\obj
			Delete pz
		EndIf
	
	Next pz

	SetWindow "HP: " + HP + " Panokset: " + _clip + " Pisteet: " + _pts + " Seuraava: " + _zsp
	
	DrawScreen
	ClsColor 255, 255, 255
	
	If HP < 0 Then MakeError "Hävisit, lopulliset pisteet " + _pts

Forever

Function SpawnZombo()
	
	z.Zombie = New( Zombie )
	z\obj = CloneObject( MasterZombo )
	z\dmg = ZOMDMG
	z\hp = ZOMHEA
	_fix = _UBORD
	_fix2 = _LBORD
	Select Rand( 0, 3 )
		
		Case 0
			PositionObject z\obj, _RBORD + Rand( MINRNG, MAXRNG ), Rand( _fix, _DBORD )      
		Case 1
			PositionObject z\obj, _LBORD - Rand( MINRNG, MAXRNG ), Rand( _fix, _DBORD )      
		Case 2
			PositionObject z\obj, Rand( _fix2, _RBORD ), _DBORD + Rand( MINRNG, MAXRNG )      
		Case 3
			PositionObject z\obj, Rand( _fix2, _RBORD ), _UBORD - Rand( MINRNG, MAXRNG )         
		
	EndSelect
	ShowObject z\obj, ON   

EndFunction 
Herra taisi unohtaa että defaulttimedia on bmp, eikä png-muodossa.

EDIT: Ja zombie.bmp ei ole olemassa.
^^
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Pikku pelit

Post by esa94 »

TheDuck wrote: Herra taisi unohtaa että defaulttimedia on bmp, eikä png-muodossa.

EDIT: Ja zombie.bmp ei ole olemassa.
Ups. Sen siitä saa kun on kustomi media-kansio ja CBNux.

Korjaisin mutta kun mulla ei ole defaulttia mediaa. Zombo on muistaakseni se tyyppi jolla on kaksi pyssyä ojennettuna (guy2.bmp?) ja solttu on soldier.bmp
EDIT:

korjattu

User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Pikku pelit

Post by TheDuck »

esa94 wrote:
EDIT:

korjattu

Edelleenkin se on guy.bmp eikä guy.png!
^^
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Pikku pelit

Post by esa94 »

Luulin et muutin sen :o
Post Reply