Page 1 of 2

Viikkokisa XV

Posted: Wed Aug 06, 2008 2:37 pm
by Henkru
Aiheena: TasoHYppely


Säänöt
-Viikkokisan perussäännöt
-Kisa päättyy 25.8.08 klo 23:59. Tietenki venytetään tarpeen mukaan :D
-Osallistumistyö lähetetään tähän topikkiin kaikkineen tiedostoineen, mitä se tarvii. Pakattuna. Tietenkää ei tarvitse pakkaa, jos on pelkkä cb-tiedosto.

Voittaja ratkaistaan äänestämällä erillisessä topikissa.

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 2:46 pm
by Ruuttu
Kaikki toteuttamisen arvoiset "uudet ominaisuudet" on taidettu jo tehdä. Lisää voi siis tehdä lähinnä vain dll:ien avulla. Ja koska dll:iä ei voi tehdä CoolBasicilla, on aika outoa, että tästä tehtiin kilpailu.

Eipä muuta, osallistun, jos keksin jotain.

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 3:25 pm
by Henkru
JOo mutta toki wanhojakin ideoita saa käyttää ;)

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 3:26 pm
by temu92
Niin ja vaikka dll tehdäänkin eri kielellä niin et sä pysty käyttämään sitä dll:ää coolbasicilla eri kielellä.

Esim. kutsut dllää c++:lla vaikka sitä pitäisi kutsua cb:lla

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 3:51 pm
by Henkru
No pidetäänkö tämä aihe vai vaihdetaan?

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 3:56 pm
by Harakka
Itse kannattaisin aiheen vaihtamista. Joku simppelimpi aihe olisi viime kisan jälkeen mukavampi. ;)

EDIT: Tasohyppely käy hyvin, aloitinpa pari päivää sitten tasohyppelypelin tekemisenkin.

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 4:01 pm
by Ruuttu
Harakka wrote:Itse kannattaisin aiheen vaihtamista. Joku simppelimpi aihe olisi viime kisan jälkeen mukavampi. ;)
Miten olisi vaikkapa ihan tavallinen tasohyppely? Toki niitä on tehty ennenkin, mutta että ihan tosissaan viimeistelisi pelin loppuun saakka ja todella tekisi siitä hauskan pelikokemuksen - sellaisia pelejä ei ole tuhansittain tehty. Lisäksi tasohyppely ei ole koskaan aiemmin ollut kisan aiheena - aika outoa, sehän on perinteisin pelityyppi mitä on. :D

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 4:08 pm
by koodaaja
Hieman edistyneempi aiheeseen liittyvä on ollut, nimittäin tasohyppelyn tekoäly.

Mutmut, onhan tämä hiukka jännä aihe. Kun kirjaston tekeminen lähtee yleensä siitä, että haluaisi a)tehdä jonkin helpommaksi tai b)poistaa jonkin cb:n rajoitteen (DLL:ien tapauksessa). Joten koska kovin moni tuskin haluaa kopioida ideaansa jo toteutetuista kirjastoista, lienee inspiksen puute pahin ongelma tällaisessa kisassa.

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 4:27 pm
by Alligaattori
EDIT:

Otin fuktioni pois, kun kerran aihe vaihdettiin. Voin laitella ne esimerkkiosioon, kun jaksan.


Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 4:39 pm
by Koodiapina
Ehdottomasti vaihdat idean. Eihän CoolBasicilla edes saa kummoisia kirjastoja kun pitää tyytyä tyyppi-kokelmien ja funktioiden rakenteluun. Ei sillä, että osaisin luokkien kanssa jotain väsätä. Ehdottaisin, että aihe olisi peli hahmogeneraattorilla. Sitähän melkein puolet CBläisistä toivoi tässä hiljakkoin.

Re: Viikkokisa XV

Posted: Wed Aug 06, 2008 6:50 pm
by Henkru
Vaihetaan sitten Tasohyppelyyn :D

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 8:12 am
by Ruuttu
Ja alkaakos tämä nyt sitten ensi maanantaina vai heti?

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 10:58 am
by Koodiapina
Ruuttu wrote:Ja alkaakos tämä nyt sitten ensi maanantaina vai heti?
Mitä väliä sillä on? Kannattaa aloittaa pelinteko heti kun kuulee mikä on aiheena! :D

EDIT: Joo kaks viikkoa vois olla hyvä näin aluksi.

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 2:42 pm
by Henkru
Heti alkaa. Otetaanko saman tein kaksi viikkoa aikaa tehdä tätä?

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 9:46 pm
by Ilkka
Haaa.. kerrankin aihe johon voin osallistuu :), kts henkru. onhan tota grafikkaaki jo kertyny mukavasti.

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 9:54 pm
by Olwi
Hah,mukana ollaan,nyt vain pitää miettiä uniikki idea. ;)

Re: Viikkokisa XV

Posted: Thu Aug 07, 2008 11:01 pm
by Jonez
Hyvä, yksinkertainen aihe joka antaa kuitenkin vapauksia vaikka mihin.

Itse keksin jo suht uuden idean ainakin cb-piireissä. Saa nähdä jos armeijalta ehdin väsätä jonkun puolivalmiin tekeleen kisaan. Tässä on aikaa ens sunnuntaihin asti. Tosin huomenna on siskon häät ja ehkä sitä vois viikonloppulomilla jotain muutakin tehdä kuin datailla... ;)

Re: Viikkokisa XV

Posted: Sat Aug 09, 2008 10:54 am
by Ruuttu
Ilmoittelen etukäteen, että osallistun pelillä, jossa päähenkilönä on robotti. Jos siis haluat omaperäisyyspisteitä, älä tee robottipeliä. ;)

Re: Viikkokisa XV

Posted: Sat Aug 09, 2008 7:14 pm
by Valtzu
Osallistun.

Code: Select all

Type LINES
    Field x
    Field y
    Field w
End Type

Type BOXZ
    Field x
    Field y
End Type

bg=MakeImage(400,400)
DrawToImage bg
    For y = 0 To 400 Step 4
        r=50+y/3.0
        g=255-y/4.0
        b=255
        Color r,g,b
        Box 0,y,400,4
    Next y
DrawToScreen

Global _TXT As String,_TXT2 As String,points,collision As Byte, game_started,ukko_x As Float,ukko_y As Float,ukko_speed_y As Float,ukko_speed_x As Float
Global newgame,making_new_line,width,start_x,start_y

ukko_x = 0.0
ukko_y = 0.0
ukko_speed_y = 0.0

making_new_line = False
ClsColor cbwhite
Cls

Const UKKO_WIDTH  = 10
Const UKKO_HEIGHT = 15

NewLine(-50,0,250)
game_started = True
ukko_x=-30
ukko_y=70
ukko_speed_y=0
points=0

Dim sfx(1)
sfx(0)=LoadSound("Media\Blaster.wav")

SetFont LoadFont("impact",24,1)

SetWindow "BOXZ"

game_started=False
newgame=Timer()+3000
_TXT="Press the Space Button to jump"
_TXT2="Hit left mouse button to draw levels"
_TXT3$="And try to collect all the boxes :)"

Repeat
    DrawImage bg,0,CameraY()-100
    MouseEvents()
    GuyPhysics(False,True)
    AddBoxes()
    DrawBoxes()
    DrawGuy()
    DrawLines()
    PositionCamera CurveValue(ukko_x,CameraX(),10.0),Min(Max(CurveValue(ukko_y,CameraY(),20.0),0),100)
    
    If newgame Then
        If Timer()>newgame Then
            For iL.LINES = Each LINES
                Delete iL
            Next iL
            For iB.BOXZ = Each BOXZ
                Delete iB
            Next iB
            NewLine(-50,0,250)
            game_started = True
            ukko_x=-30
            ukko_y=70
            PositionCamera ukko_x,ukko_y
            ukko_speed_y=0
            ukko_speed_x=0
            points=0
            newgame=0
        Else
            CenterText 200,130,_TXT,2
            CenterText 200,155,_TXT2,2
            CenterText 200,190,_TXT3,2
        EndIf
    EndIf
    
    DrawScreen
Forever

Function AddBoxes()
    If Rand(1,100)=65 Then
        n.BOXZ = New(BOXZ)
        n\x    = CameraX()+300
        n\y    = Rand(-100,200)
    EndIf
End Function

Function DrawBoxes()
    DrawToWorld ON
    For iB.BOXZ = Each BOXZ
        Color 230,230,230
        Box iB\x-6,iB\y+6,12,12,0
        Color 200,200,200
        Box iB\x-5,iB\y+5,10,10,0
        Color 170,120,120
        Box iB\x-4,iB\y+4,8,8
        If UkkoBoxOverlap(iB\x,iB\y) Then
            Delete iB
            sf=PlaySound(sfx(0))
            SetSound sf,0,100,0,50000
            points + 1
        EndIf
        If iB\x<CameraX()-250 Then Delete iB
    Next iB
    DrawToWorld OFF
End Function

Function UkkoBoxOverlap(x,y)
    Return BoxOverlap(ukko_x-UKKO_WIDTH/2,ukko_y-UKKO_HEIGHT/2,UKKO_WIDTH,UKKO_HEIGHT,x,y,12,12)
End Function


Function MouseEvents()
    If MouseDown(1) And MouseDown(2) = 0 Then
        If making_new_line = False Then
            making_new_line = True
            start_x         = MouseWX()
            start_y         = MouseWY()
        EndIf
        width = MouseWX()-start_x
        DrawToWorld ON
        Color 200,200,200
        Box start_x+(width<0)*width,start_y,Abs(width),1
        Color cbblack
        DrawToWorld OFF
    EndIf
    If MouseDown(1) = 0 And making_new_line = True Then
        making_new_line = False
        NewLine(start_x+(width<0)*width,start_y,Abs(width))
    EndIf
    If MouseDown(2) Then making_new_line = False
    If MouseHit(3) Then
        game_started = Not game_started
        If game_started Then
            ukko_x=MouseWX()
            ukko_y=MouseWY()
            ukko_speed_y=0
            ukko_speed_x=0
        EndIf
    EndIf
End Function

Function GuyPhysics(force_lk=0,force_rk=0)
    If game_started Then
        'lk=LeftKey() Or force_lk
        rk=force_rk'*(1-lk*0.8)
        If rk Or lk Then
            ukko_speed_x = Min(Max(ukko_speed_x+(rk)*0.05*((collision=1)+(collision=0)*0.2),-2),2)
        ElseIf collision = True Then
            ukko_speed_x=CurveValue(0.0,ukko_speed_x,20.0)
        Else
            ukko_speed_x=CurveValue(0.0,ukko_speed_x,100.0)
        EndIf
        ukko_x = ukko_x + ukko_speed_x
        x1=ukko_x-UKKO_WIDTH/4
        x2=ukko_x+UKKO_WIDTH/4
        y1=ukko_y+UKKO_HEIGHT/2
        y2=ukko_y-UKKO_HEIGHT/2
        collision = False
        For iL.LINES = Each LINES
            If ukko_speed_y<0.0 Then
                x_col = (x1>=iL\x And x2<=iL\x+iL\w)
                If x_col And iL\y<=y2 And iL\y>=y2+ukko_speed_y Then
                    ukko_y = iL\y+UKKO_HEIGHT/2
                    collision = True
                EndIf
            EndIf
        Next iL
        If Not collision Then
            ukko_speed_y = ukko_speed_y - 0.04
            ukko_y = ukko_y + ukko_speed_y
        Else
            ukko_speed_y = 0
        EndIf
        If KeyDown(cbkeyspace) And collision = True Then
            ukko_speed_y = 2.0
        EndIf
        If ukko_y<-150 Then
            game_started=False
            newgame=Timer()+3000
            _TXT="You got " + (points * 100) + " points!"
            _TXT2=""
            _TXT3=""
        EndIf
    EndIf
End Function

Function DrawGuy()
    DrawToWorld ON
    If game_started Then
        Color 100,100,100
        Box ukko_x-UKKO_WIDTH/2,ukko_y+UKKO_HEIGHT/2,UKKO_WIDTH,UKKO_HEIGHT,0
        Circle ukko_x-UKKO_WIDTH/2,ukko_y+UKKO_HEIGHT*0.75,UKKO_WIDTH,0
        Color 255,255,255
        Circle ukko_x-UKKO_WIDTH/2+1,ukko_y+UKKO_HEIGHT*0.75-1,UKKO_WIDTH-2
        Box ukko_x-UKKO_WIDTH/2+1,ukko_y+UKKO_HEIGHT/2-1,UKKO_WIDTH-2,UKKO_HEIGHT-2
        Color 50,50,100
        Box ukko_x+UKKO_WIDTH/4-1,ukko_y+UKKO_HEIGHT/2+1,2,2
        Box ukko_x,ukko_y+1,UKKO_WIDTH/2,1
        Dot ukko_x,ukko_y+2
    EndIf
    DrawToWorld OFF
End Function

Function DrawLines()
    DrawToWorld ON
    For iL.LINES = Each LINES
        Color 255,255,255
        Box iL\x,iL\y-1,iL\w,1
        Color 0,0,0
        Box iL\x-1,iL\y,iL\w+2,3,0
        If iL\x+iL\w<CameraX()-200 Then Delete iL
    Next iL
    DrawToWorld OFF
End Function

Function NewLine(x,y,width)
    n.LINES = New(LINES)
    n\x     = x
    n\y     = y
    n\w     = width
End Function
EDIT: sreen sot
Image

Re: Viikkokisa XV

Posted: Sat Aug 09, 2008 9:09 pm
by Ilkka
Pitääkö lähde koodi olla mukana?