Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Kaksinpelattava "Pingis"

Kentti [16.10.2006 21:32:06]

#

CoolBasicilla toteutettu, melko yksinkertainen kaksinpelipingis.

Pelissä on ideana osua "mailalla" (ts. levyllä) palloon, estäen sitä osumasta omaan seinään (pelaaja 1:llä ruudun oikea sivu, pelaaja 2:lla ruudun vasen sivu). Jos näin kuitenkin pääsee käymään, saa vastustaja pisteen. Ylä- tai alaseinään (ruudun ylä- tai alalaita) osuessaan pallo kimpoaa siitä.

Pelaaja 1 ohjaa mailaansa ylä- ja alanuolinäppäimillä (mailaa voi liikuttaa vain ylös ja alas) ja pelaaja 2 ohjaa näppäimillä W ja S.

Pallon vauhti x akselilla kiihtyy tiettyyn rajaan asti yhdellä ja samoin y-akselilla joka lyönnillä. Tästä johtuu se, että pallo "menee hiljempaa" eteenpäin, kun se lähtee suoraan x-akselin suuntaan.

Pelissä ei ole käytetty yhtään kuvagrafiikoita, joten pelkkä kääntäminen riittää.

PS. Jos peli tuntuu tutulta, niin näin tiedoksi, että idean sain vanhalla koneella olleesta, vastaavasta pelistä. Sitä vaan enää nykyään löytää vähän heikommin.

Kääntäjän voi ladata ilmaiseksi osoitteesta http://koti.mbnet.fi/~psywave/coolbasic/cbdownload.php

''''''''''''''''''''''''''
'' Perinteinen "pingis" ''
''''''''''''''''''''''''''

' Nopeille koneille. Rajoittaa maksiminopeutta.
FrameLimit 40

' Suurennetaan koko ruudulle
SCREEN 720, 540, 0, cbsizable
SetWindow "Pingis", 3

' Asetetaan taustaväriksi tummanvihreä
ClsColor cbDarkGreen

' Pelaajien lähtöpaikat.
pelaaja1_y = 270
pelaaja2_y = 270


' Onko pallolle annettu alkuvauhti?
alkuvauhti = False

' Pallon nopeus.
x_vauhti = 2
y_vauhti = 2

' Pisteet.
pelaaja1_points = 0
pelaaja2_points = 0

Repeat

    ' Piirretään kaikki tarvittava... "Mailat" ja pallo ja viiva keskikenttään.

    Box 5, pelaaja2_y, 5, 30 ' Vasen maila
    Box 710, pelaaja1_y, 5, 30 ' Oikea maila
    Circle x, y, 10 ' Pelipallo
    Box 360, 0, 1, 540 ' Keskiviiva

    ' Ohjaus.
    If UpKey() Then pelaaja1_y - 6 ' Pelaaja 1 ylöspäin
    If DownKey() Then pelaaja1_y + 6 ' Pelaaja 1 alaspäin
    If pelaaja1_y < 0 Then pelaaja1_y = 0 ' Ei päästetä yläreunasta läpi.
    If pelaaja1_y > 520 Then pelaaja1_y = 520 ' Ei päästetä alareunasta läpi.

    If KeyDown(cbKeyW) Then pelaaja2_y - 5 ' Pelaaja 2 ylöspäin
    If KeyDown(cbKeyS) Then pelaaja2_y + 5 ' Pelaaja 2 alaspäin
    If pelaaja2_y < 0 Then pelaaja2_y = 0 ' Ei päästetä yläreunasta läpi.
    If pelaaja2_y > 520 Then pelaaja2_y = 520 ' Ei päästetä alareunasta läpi.

    ' Tarkistetaan, osuiko pallo mailaan tai ylä / alareunaan. Jos osui, suunnanmuutos. Annetaan myös alkuvauhti.

    If alkuvauhti = False Then
        ' Pallon lähtöpaikka.
        x = 360
        y = 270
        x_vauhti = Rand(-4, 4) ' Randomi x-akselin nopeus
        y_vauhti = Rand(-4, 4) ' Randomi y-akselin nopeus
        If x_vauhti + y_vauhti < 5 And x_vauhti + y_vauhti > -5 Then ' Jos vauhtien yhteisnopeus on alle 5, arvotaan uusi alkuvauhti
            x_vauhti = Rand(-4, 4)
            y_vauhti = Rand(-4, 4)
            alkuvauhti = False
        Else
            alkuvauhti = True
        EndIf
    EndIf

    ' Ylä- ja alareunasta törmäys.
    If y < 0 Or y > 540 Then y_vauhti = -y_vauhti

    ' Mailaan törmäys.
    If BoxOverlap(705, pelaaja1_y, 5, 30, x, y, 10, 10) = 1 Then x_vauhti = -x_vauhti: x_vauhti - 1: y_vauhti + 2: suunta_x = x

    If BoxOverlap(5, pelaaja2_y, 5, 30, x, y, 10, 10) = 1 Then x_vauhti = -x_vauhti: x_vauhti + 1: y_vauhti - 2: suunta_x = x

    ' Tarkastetaan, ettei nopeus kasva liikaa.
    If x_vauhti < -7 Then x_vauhti = -7
    If x_vauhti > 7 Then x_vauhti = 7
    If y_vauhti < -7 Then y_vauhti = -7
    If y_vauhti > 7 Then y_vauhti = 7

    ' Lasketaan pisteet:
    If x < -5 Then pelaaja1_points = pelaaja1_points + 1: alkuvauhti = False
    If x > 725 Then pelaaja2_points = pelaaja2_points + 1: alkuvauhti = False

    ' Liikutetaan palloa.
    ' Mutta tarkastetaan ensin pallon liikkumissuunta.
    If suunta_x < x Xor suunta_x = x Then x + x_vauhti: y - y_vauhti ' Pallo menee vasemmalta oikealle.
    If suunta_x > x Xor suunta_x = x Then x + x_vauhti: y - y_vauhti ' Pallo menee oikealta vasemmalle.

    ' Tulostetaan pisteet.
    Text 188, 0, "Pelaaja 2 pisteet: " + pelaaja2_points + " | Pelaaja 1 pisteet: " + pelaaja1_points

    ' Tätä ei saa unohtaa!! Piirtää näytön, ilman tätä ei näy mitään.
    DrawScreen

Until EscapeKey()

Vike91 [15.02.2007 16:15:57]

#

Jess. tätä kaipasin.

Nettimato [05.03.2010 18:08:24]

#

Hyväkoulussa tulee kohta coolbasic ja nyt opiskelen vähän sitä..

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta