Skip to content
Snippets Groups Projects
Commit db374041 authored by Nilla Magga's avatar Nilla Magga
Browse files

muutettu peliä paremmaksi ja kommentoitu ohjelmaa

parent 0f2d4c9e
No related branches found
No related tags found
No related merge requests found
Surffipeli/Content/aalto.png

67 KiB | W: | H:

Surffipeli/Content/aalto.png

63.3 KiB | W: | H:

Surffipeli/Content/aalto.png
Surffipeli/Content/aalto.png
Surffipeli/Content/aalto.png
Surffipeli/Content/aalto.png
  • 2-up
  • Swipe
  • Onion skin
Surffipeli/Content/kivi.png

464 KiB | W: | H:

Surffipeli/Content/kivi.png

460 KiB | W: | H:

Surffipeli/Content/kivi.png
Surffipeli/Content/kivi.png
Surffipeli/Content/kivi.png
Surffipeli/Content/kivi.png
  • 2-up
  • Swipe
  • Onion skin
Surffipeli/Content/surffilauta.png

855 KiB | W: | H:

Surffipeli/Content/surffilauta.png

835 KiB | W: | H:

Surffipeli/Content/surffilauta.png
Surffipeli/Content/surffilauta.png
Surffipeli/Content/surffilauta.png
Surffipeli/Content/surffilauta.png
  • 2-up
  • Swipe
  • Onion skin
Surffipeli/Content/surffilautaKatki.png

927 KiB | W: | H:

Surffipeli/Content/surffilautaKatki.png

888 KiB | W: | H:

Surffipeli/Content/surffilautaKatki.png
Surffipeli/Content/surffilautaKatki.png
Surffipeli/Content/surffilautaKatki.png
Surffipeli/Content/surffilautaKatki.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -4,13 +4,15 @@ using Jypeli.Controls;
using Jypeli.Widgets;
using System;
using System.Collections.Generic;
using System.Text;
namespace Surffipeli
{
/// @author OMISTAJA
/// @version 30.05.2024
/// @author Nilla Magga
/// @version 31.05.2024
/// <summary>
///
/// Surffipeli jossa tarkotuksena kerätä mahdollisimmaan paljon aaltoja
/// ja varoa seiniä sekä kiviä
/// </summary>
public class Surffipeli : PhysicsGame
{
......@@ -30,12 +32,15 @@ namespace Surffipeli
private bool peliKaynnissa = false;
Timer liikutusajastin = new Timer();
private Timer liikutusajastin;
public IntMeter pisteLaskuri;
public Timer aikalaskuri;
public override void Begin()
{
ClearAll();
SetWindowSize(1280, 720);
Gravity = new Vector(0, -100);
LuoKentta();
......@@ -50,22 +55,28 @@ namespace Surffipeli
MasterVolume = 0.5;
liikutusajastin = new Timer();
liikutusajastin.Interval = 0.01;
liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
liikutusajastin.Start();
peliKaynnissa = true;
}
void SiirraPelaajaaOikeammalle()
{
pelaaja1.Push(new Vector(NOPEUS, 0.0));
}
/// <summary>
/// Liikuttaa pelaajaa oikealle automaattisesti
/// </summary>
void SiirraPelaajaaOikeammalle()
{
pelaaja1.Push(new Vector(NOPEUS, 0.0));
}
/// <summary>
/// Luodaan pistelaskuri aalloista saatuja pisteitä varten
/// Asetataan se oikeaan yläkulmaan ja tehdään sille palkki joka muuttuu pisteiden mukaisesti punaiseksi
/// Asetetaan pelille maksimipistemäärä
/// </summary>
private void LuoPistelaskuri()
{
pisteLaskuri = new IntMeter(0);
pisteLaskuri.MaxValue = 5;
pisteLaskuri.MaxValue = 20;
pisteLaskuri.UpperLimit += Voitto;
Label pisteNaytto = new Label();
......@@ -96,15 +107,21 @@ namespace Surffipeli
{
Label voitto = new Label("VOITTO");
voitto.Y = 50;
voitto.TextColor = Color.White;
voitto.TextColor = Color.Black;
Add(voitto);
StopAll();
liikutusajastin.Stop();
LuoAikalaskuri2();
Keyboard.DisableAll();
Keyboard.Disable(Key.Up);
Keyboard.Disable(Key.Down);
aikalaskuri.Stop();
Gravity = Vector.Zero;
}
}
/// <summary>
/// Pelille aikalaskuri joka juoksee pelin alusta siihen asti kun voitetaan peli tai hävitään
/// </summary>
private void LuoAikalaskuri()
{
aikalaskuri = new Timer();
......@@ -127,7 +144,9 @@ namespace Surffipeli
}
/// <summary>
/// Aikalaskuri, jolla peli saadaan käynnistymään 5s päästä uudestaan voiton jälkeen
/// </summary>
void LuoAikalaskuri2()
{
......@@ -138,14 +157,38 @@ namespace Surffipeli
Label aika = new Label("Voittoon käytetty aika: ");
aika.Y = +30;
aika.TextColor = Color.White;
aika.TextColor = Color.Black;
Add(aika);
string aika1 = aikalaskuri.CurrentTime.ToString();
aika1 = aika1.Substring(0, 4);
Label voittoAika = new Label(aika1);
voittoAika.Y = +10;
voittoAika.TextColor = Color.Black;
Add(voittoAika);
}
/// <summary>
/// Aikalaskuri, jolla peli saadaan käynnistymään 5s päästä uudestaan häviön jälkeen
/// </summary>
void LuoAikalaskuri3()
{
Timer nollaus = new Timer();
nollaus.Interval = 5;
nollaus.Timeout += AikaLoppui;
nollaus.Start(1);
Label aika = new Label("Peliä pelattu ennen häviötä: ");
aika.Y = +30;
aika.TextColor = Color.Black;
Add(aika);
string aika1 = aikalaskuri.CurrentTime.ToString();
aika1 = aika1.Substring(0, 4);
Label voittoAika = new Label(aika1);
voittoAika.Y = +10;
voittoAika.TextColor = Color.White;
voittoAika.TextColor = Color.Black;
Add(voittoAika);
}
......@@ -153,9 +196,11 @@ namespace Surffipeli
void AikaLoppui()
{
ResetLayers();
Begin();
Begin();
}
/// <summary>
/// Kentän luonti peliä varten
/// </summary>
private void LuoKentta()
{
TileMap kentta = TileMap.FromLevelAsset("kentta1.txt");
......@@ -164,18 +209,34 @@ namespace Surffipeli
kentta.SetTileMethod('*', LisaaAalto);
kentta.SetTileMethod('N', LisaaPelaaja);
kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
Level.CreateBorders();
Level.Background.CreateGradient(Color.White, Color.SkyBlue);
Level.CreateLeftBorder();
Level.CreateTopBorder();
Level.CreateBottomBorder();
PhysicsObject oikeaReuna = Level.CreateRightBorder();
oikeaReuna.Tag = "maali";
}
/// <summary>
/// Luodaan pelille seinät
/// </summary>
/// <param name="paikka"></param>paikka mihin seinä asetetaan, tieto tuodaan kentän tiedoista
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
private void LisaaSeina(Vector paikka, double leveys, double korkeus)
{
PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
seina.Position = paikka;
seina.Color = Color.Green;
seina.Color = Color.Beige;
seina.Tag = "seina";
Add(seina);
}
/// <summary>
/// Luodaan kenttään kiviä, joita pelaajan pitää väistää
/// </summary>
/// <param name="paikka"></param>paikka mihin kivi asetetaan, tieto tuodaan kentän tiedoista
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
private void LisaaKivi(Vector paikka, double leveys, double korkeus)
{
PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
......@@ -184,7 +245,12 @@ namespace Surffipeli
kivi.Tag = "kivi";
Add(kivi);
}
/// <summary>
/// Luodaan kenttään aaltoja, joita pelaajan tarkoitus kerätä
/// </summary>
/// <param name="paikka"></param> paikka mihin aalto asetetaan, tieto tuodaan kentän tiedoista
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
private void LisaaAalto(Vector paikka, double leveys, double korkeus)
{
PhysicsObject aalto = PhysicsObject.CreateStaticObject(leveys, korkeus);
......@@ -194,38 +260,66 @@ namespace Surffipeli
aalto.Tag = "aalto";
Add(aalto);
}
/// <summary>
/// Luodaan pelaaja ja määritetään sen törmäyskäsittelijät
/// </summary>
/// <param name="paikka"></param> mihin pelaaja asetetaan, tieto tuodaan kentän tiedoista
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
private void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
{
pelaaja1 = new PlatformCharacter(125, 125);
pelaaja1 = new PlatformCharacter(125, 50);
pelaaja1.Position = paikka;
pelaaja1.Mass = 4.0;
pelaaja1.Image = pelaajanKuva;
AddCollisionHandler(pelaaja1, "aalto", TormaaAaltoon);
AddCollisionHandler(pelaaja1, "kivi", TormaaKiveen);
AddCollisionHandler(pelaaja1, "seina", TormaaSeinaan);
AddCollisionHandler(pelaaja1, "maali", Maali);
Add(pelaaja1);
}
/// <summary>
/// Luodaan päätyseinästä objekti, jonka saavuttamalla kenttä päästään läpi
/// </summary>
/// <param name="pelaaja"></param>
/// <param name="kohde"></param>
void Maali(PhysicsObject pelaaja, PhysicsObject kohde)
{
MessageDisplay.Add("Pääsit kentän läpi!");
Gravity = Vector.Zero;
StopAll();
Keyboard.Disable(Key.Up);
Keyboard.Disable(Key.Down);
aikalaskuri.Stop();
liikutusajastin.Stop();
}
/// <summary>
/// Lisätään näppäimet millä peliä hallitaan
/// </summary>
private void LisaaNappaimet()
{
Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja siirtyy ylöspäin", pelaaja1, HYPPYNOPEUS);
Keyboard.Listen(Key.Down, ButtonState.Pressed, Hyppaa, "Pelaaja siirtyy alaspäin", pelaaja1, -HYPPYNOPEUS);
}
private void Liikuta(PlatformCharacter hahmo, double nopeus)
{
hahmo.Walk(nopeus);
}
/// <summary>
/// Pakottaa pelaajan siirtymään ylös tai alaspäin kun ohjaavaa näppäintä painetaan
/// </summary>
/// <param name="hahmo"></param>Liikutettava objekti
/// <param name="nopeus"></param>Nopeus millä objektia liikutetaan
private void Hyppaa(PlatformCharacter hahmo, double nopeus)
{
hahmo.ForceJump(nopeus);
}
/// <summary>
/// Lisätään teksti "keräsit aallon" ja annetaan pistelaskuriin yksi lisäpiste
/// </summary>
/// <param name="hahmo"></param>
/// <param name="aalto"></param>
private void TormaaAaltoon(PhysicsObject hahmo, PhysicsObject aalto)
{
maaliAani.Play();
......@@ -233,7 +327,11 @@ namespace Surffipeli
aalto.Destroy();
pisteLaskuri.Value += 1;
}
/// <summary>
/// Peli loppuu kun kiveen osutaan. Määritetään pelaajalle uusi kuva
/// </summary>
/// <param name="hahmo"></param>
/// <param name="kivi"></param>
private void TormaaKiveen(PhysicsObject hahmo, PhysicsObject kivi)
{
if (peliKaynnissa)
......@@ -241,12 +339,22 @@ namespace Surffipeli
MessageDisplay.Add("Kuolit! :(");
Keyboard.Disable(Key.Up);
Keyboard.Disable(Key.Down);
liikutusajastin.Stop();
peliKaynnissa = false;
pelaaja1.Image = pelaajanKuolemakuva;
StopAll();
LuoAikalaskuri3();
liikutusajastin.Stop();
Keyboard.Disable(Key.Up);
Keyboard.Disable(Key.Down);
aikalaskuri.Stop();
Gravity = Vector.Zero;
}
}
/// <summary>
/// Lisätään teksti "Varo seiniä" kun pelaaja osuu ylä- tai alaseinään.
/// </summary>
/// <param name="hahmo"></param>
/// <param name="seina"></param>
private void TormaaSeinaan(PhysicsObject hahmo, PhysicsObject seina)
{
if (peliKaynnissa)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment