Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tmruisma/ohj1ht
  • eljuarha/ohj1ht
  • alvejmsu/ohj1ht
  • tuvoo/ohj1ht
  • annelinu/ohj1ht
  • malonen/ohj1ht
  • jphkauxs/ohj1ht
  • rarouvin/vaiskin-kauppapeli
  • ansovalk/ohj1ht
  • tkleinon/ohj1ht
  • tmraassy/ohj1ht
  • fmksepps/ohj1ht
  • kosksaka/ohj1ht
  • aatjarvs/ohj1ht
  • segersls/ohj1ht
  • peropami/ohj1ht
  • jylhasmy/ohj1ht
  • suomiejs/ohj1ht
  • ojanpele/ohj1ht
  • oeppulkk/ohj1ht
  • pulliami/ohj1ht
  • lemakinn/ohj1ht
  • lappkvuu/ohjelmointi-1-ht-1
  • misutuom/ohj1ht
  • vivclaje/harkkatyo
  • kohelasa/ohj1ht
  • tulehtol/ohj-1-ht-2023
  • otoskinn/ohj1ht
  • karossi/ohj1ht
  • anttlaol/ohj1ht
  • autioans/ohj1ht
  • vjokine/ohjelmointi-1-kurssin-harkkapeli
  • viempaas/ohj1ht
  • jjikouyz/ohj1ht
  • pejuuso/ohj1ht
  • ideljako/ohj1ht
  • juutirls/ohj1ht
  • nivagadd/ohj1ht
  • elvivihe/ohj1ht
  • tie/ohj1/2023k/ohj1ht
  • aruokane/ohj1ht
  • nimirich/ohj1ht
  • alarnika/ohj1ht
  • viheijo/ohj1ht
  • esshelkr/ohj1ht
  • tttkanka/ohjelmointi-1-harjoitustyo
  • jmporras/ohj1ht
  • sernopet/ohj1ht
  • alnikupa/ohj1ht
  • kamarama/ohj1ht
  • pakakata/ohj1ht
  • sorjonmi/ohj1ht
  • silimapa/ohj1ht
  • jatirkko/ohj1ht
  • jsundelu/ohj1ht
  • maerlepo/ohj1ht
  • korhoovy/ohj1ht
  • partanji/ohj1ht
  • amheikkz/ohj1ht
  • koskinnm/ohj1ht
  • pehaline/ohj1ht
  • svhyvaos/ohj1ht
  • tetutaim/ohj1ht
  • alaluuop/ohj1ht
  • veijhrxz/ohj1ht
  • anmatala/ohjelmointi-1-harjoitustyo
  • anidmapo/ohj1ht
  • ttipoiko/ohj1ht
  • pyhalavh/ohj1ht
  • jemaijal/ohj1ht
  • joanurmi/ohj1ht
  • eemaelsa/ohj1ht
  • mijoutri/ohj1ht
  • ijsalmin/ohj1ht
  • saimaahu/ohj1ht
  • annkriau/ohj1ht
  • mkhirvon/ohj1ht
  • uttija/ohj1ht
  • mikkolto/ohj1ht
  • meakorho/ohj1ht
  • laaksoel/ohj1ht
  • mholammi/ohj1ht
  • krrekahk/ohj1ht
  • wistnest/ohj1ht
  • arhesant/arttu-s-ohj-1-peli
  • ihakalel/ohj1ht
  • ijaslaii/ohj1ht
  • veosvuol/ohj1ht
  • saarelee/ohj-1-ht-o
  • aevantti/ohj1ht
  • akruth/ohj1ht
  • idjupirh/ohj1ht
  • cgmlilja/ohj1ht
  • pojujoen/ohj1ht
  • ssfrom/ohj1ht
  • heinonpe/ohj1ht
  • viitanti/ohj1ht
  • lehtolts/ohj1ht
  • galetas/ohj1ht
  • dikogalu/ohj1ht
  • wahesale/ohj1ht
  • tepesimo/ohj1ht
  • ssapakys/ohj1ht
  • vestmine/ohj1ht
  • dooleyy/ohj1ht
  • vicdavfa/ohj1ht
  • kalloupe/ohj1ht
  • katajaam/ohj1ht
  • aransjos/ohj1ht
  • kaahyton/ohj1ht
  • jarvluee/ohj1ht
  • joaframi/ohj1ht
  • saiannka/ohj1ht
  • sasumyrs/ohj-1-ht-2023
  • jumavehi/ohj-1-ht-k-23
  • juhahuov/ohj1ht
  • immoneth/ohj-1-ht-thomas-immonen
  • rimijarv/ohj1ht
  • ponkayy/ohj1ht
  • tiainess/ohj1ht
  • setkinnu/ohj1ht
  • vvkeinan/ohj1ht
  • jelavonv/ohj1ht
  • haukjohe/ohj1ht
  • jumavais/ohj1ht
  • esmajoki/ohj1ht
  • minkjmzy/ohj1ht
  • jaahwiih/ohj1ht
  • maalvirt/ohj1ht
  • tttikkan/ohj1ht
  • kihedema/ohj1ht
  • nipeniem/ohj1ht
  • saaraijm/ohj1ht
  • roalsuvi/ohj1ht
  • sjkoskel/ohj1ht
  • hsjkulma/hannelen-harjoitustyo-ohj-1
  • mitaniem/ohj1ht
  • ahiekkan/ohj1ht
  • nmpuskzv/ohj-1-ht
  • wwwmolqo/ohj1ht
  • juntjuii/ohj1ht
  • santurun/ohj1ht
  • ettalaes/ohj-1-ht
  • hairjarv/ohj1ht
  • jjbergfo/ohj1ht
  • lehtikmi/ohj1ht
  • sianpapa/ohj1ht
  • aaperttu/tipitsi
  • tie/ohj1/2024k/ohj1ht
  • hesalmuu/ohj1ht
  • erkkaoxs/ohj1ht
  • temhints/ohj1ht
  • bekrnybe/ohj-1-ht-beata-otto
  • sawakorp/ohj1ht
  • saarinan/ohj1ht
  • kronjoma/ohj1ht
  • otjolyyt/ohj1ht-otjolyyt
  • tiantaha/ohj1ht
  • krislima/ohj1ht
  • rauhulil/suunnitelma
  • jutasier/ohj1ht
  • areeheki/ohj1ht
  • lausofla/ohj-1-ht
  • vemahaka/ohj1ht
  • suurnaat/ohj1ht
  • jakaraut/ohj1ht
  • jesupalo/ohj1ht
  • ferin/ohj1ht
  • annpauko/ohj1ht
  • npfriman/ohj1ht
  • kauppmsx/ohj1ht
  • vilaleka/ohj1ht
  • rohekokk/ohj1ht
  • roiirera/ohj1ht
  • jakinnun/ohj1ht
  • tormsu/titanic
  • saukkota/ohj1ht
  • iinpitka/ohj1ht
  • samalauk/ohj1ht
  • neemjaak/ohj1ht
  • mikkonhm/ohj1ht
  • hietmaem/ohj1ht
  • skytasuz/skytta-harjoitustyo-ohj-1-kevat
  • ylonmami/ohj1ht
  • rojunatu/ohj1ht
  • niemkeys/ohj1ht
  • korhoajx/ohj1ht
  • jjrsavol/ohj1ht
  • jowinoke/ohj1ht
  • hasemajo/ohj1ht
  • pinsofhe/ohj1ht
  • peltonla/ohj1ht
  • hamaot/ohj1ht
  • kettunko/ohj1ht
  • ansammal/ohj1ht
  • lxcevrhh/ohj1ht
  • niemhizz/ohj1ht
  • jumakemp/ohj1ht
  • vmahonen/ohj-1-ht-veeti-ahonen
  • mamahank/ohj1ht
  • ajehepol/ohj1ht
  • sisverve/ohj1ht
  • samapeke/ohj1ht
  • mejniemi/ohj-1-peli
  • janjuhni/ohj1ht
  • poyhontj/ohj1ht
  • valimasj/orginal-matopeli
  • adaoliro/ohj1ht
  • ejlahti/ohj1ht
  • iileskys/ohj1ht
  • juuariju/ohj-1-ht
  • eetuoril/ohj1ht
  • ebkaariv/ohj1ht
  • mnarhi/ohj1ht
  • peltsaxs/ohj1ht
  • tkoivisx/ohj1ht
  • eovvaris/ohj-1-ht-1
  • heilauma/ohj1ht
  • mmuhonen/ohj1ht
  • leevilha/ohj1ht
  • jurvidan/ohj1ht
  • iuteitti/ilonan-harjoitustyo
  • sinkkoja/ohj1ht
  • koivuaam/ohj1ht
  • jimsaixv/salimake
  • ihalaiv/ohj1ht
  • sellmmv/projekti
  • mimatasi/ohj1ht
  • sakapusa/harkkatyo
  • annkerki/ohj1ht
  • sabevaha/ohjelmointi-1-kurssin-peli
  • alnelima/ohj1ht
  • kijoperk/ohj1ht
  • tlelakan/ohj1ht
  • ojtorppa/ohj1ht
  • sutinele/ohj1ht
  • mhjlauyy/ohj1ht
  • tidentou/ohj-1-ht
  • akpameka/ohj1ht
  • nielraut/ohj1ht
  • jomimati/ohj1ht
  • alopaate/ohj1ht
  • niptunwu/ohj1ht
  • lihiauka/ohj1ht
  • kekuvaja/ohj1ht
  • salolase/bossikasi
  • venipiil/ohj1ht
  • rantalvo/ohj1ht
  • joveheko/raekuuro
  • vivakork/ohj1ht
  • nikoskhy/ohj1ht
  • jermatkr/suunnitelmamdks
  • jaempelt/ohj1ht
  • jjhonkuu/ohj1ht
  • rautpmxt/ohj1ht
  • mmoraru/escape-from-hell
  • espakolh/ohj1ht
  • kaotkurj/ohj1ht
  • niemeiws/ohj-1-ht
  • sisavart/ohj1ht
  • sivejukl/ohj1ht
  • panjuhle/ohj1ht
  • rtaalikk/ohj1ht
  • hesalone/ohj1ht
  • topeliku/ohj1ht
  • konttijm/ohj1ht
  • llaung/ohj1ht
  • jsnikkin/ohj1ht
  • spicjrxz/ohj1ht
  • kiikriha/ohj1ht
  • juhyytin/ohj1ht
  • jajuruti/jajuruti
  • vejovile/ohj1ht
  • jjoensyu/ohj1ht
  • hjnirhax/ohj1ht
  • nobekail/ohj1ht
  • wendjkvt/ohj1ht
  • aapotska/platformer
  • lamminm/ohj1ht
  • garammtu/platformerpeli
  • apeshhhh/ohj1ht
  • tototuru/ohj1ht
  • tejupasa/ohj1ht
  • amelhadd/ohj1ht
  • heminyrh/ohj1ht
  • rehirvel/ohj1ht
  • ilfrjohe/ohj1ht
  • vkarppaz/scrape-poster
  • rikantos/ohj1ht
  • jenjulha/ohj1ht
  • miimatpa/ohj1ht
  • julsadka/ohj1ht
  • gozavoro/ohj1ht
  • viljanta/ohj1ht
  • kostamol/ohj1ht
  • ylivezu/ohj1ht
  • pjsydanm/ohj1ht
  • suvleean/ohj1ht
  • diivysei/ohjelmointi-1-harjoitustyo
  • tapiopp/ohj1ht
  • kkpyykko/ohj1ht
  • summanwe/ohj1ht
  • lpuraney/ohj1ht
  • serimaai/ohj1ht
  • tarkkael/ohj1ht
  • eljoholt/ohj1ht
  • olenkail/ohj1ht
  • alkarant/harjoitustyo
  • sajovann/ohj1ht
  • vivestma/ohj1ht
  • sodenrzt/ohj1ht
  • sssuonyy/ohj1ht
  • salmiene/ohj1ht
  • vepsanew/ohj1ht
  • aslimma/ohj1ht
  • vvimmone/ohjelmointi-1-harjoitustyo
  • hejohyde/ohjelmointi-1-harjoitustyo-hh
  • phjhaapa/ohj1ht
  • makyolaa/ohj1ht
  • mipaflin/harjoitustyo
  • juutijos/ohj1ht
  • kalini/ohj1ht
  • jaaronur/harjoitustyo
  • tie/ohj1/2025k/ohj1ht
  • teamakin/ohj1ht
  • jylhali/ohj1ht
  • ollilaas/ohj1ht
  • jkasper/ohj1ht
  • kimakiiv/ohj1ht
  • hevianes/ohj-1-ht-1
  • xwusxjid/harjoitustyo-ohj-1
  • miiseppa/ohj1ht
  • miolnauk/ohj1ht
  • karjulto/ohj1ht
  • leeaable/ohj1ht
  • emraiha/ohj1ht
  • idriemla/ohj1ht
  • mkpsoini/ohj1ht
  • lewejoen/ohj1ht
  • blanilad/ohj1ht
  • matusora/ohj1ht
  • olsonasu/ohj1ht
  • puustipa/ohj-1-reaktiopeli
  • moishe/ohj1ht
  • keleppal/ohj1ht
  • aiesmati/ohj1ht
  • misajuha/ohj1ht
  • aaelriih/ohj1ht
  • misokopo/ohj1ht
  • iblagode/ohj1ht
  • kaaelmke/ohj1ht
  • iihuuton/ohj-1-ht
  • elmapurs/ohj-1-peli
  • hankssxs/ohj1ht
  • aisoantt/ohj1ht
  • jjsaukks/ohj1ht
  • emmidaka/ohj1ht
  • lohisajo/ohj1ht
  • jlahdeww/ohj1ht
  • tepekyla/ohj1ht
  • alaxgroe/ohj1ht
  • mkrajazz/ohj1ht
  • hihehuis/ohj1ht
  • sasisiti/ohj1ht
  • tshalme/ohj1ht
  • eskrelry/ohj1ht
  • haleriak/ohj1ht
  • kerakoju/ohj1ht
  • elainnas/peli
  • sinsushi/ohj1ht
  • otemhann/ohj1ht
  • eepetaka/ohj1ht
  • ieepirzy/ohj-1-ht
  • onmahela/ohj1ht
  • jupakraa/ohj1ht
  • rajatota/ohj1ht
  • sasaable/ohj1ht
  • jupakraa/harjoitustyo-1
  • jahalmtv/ohj1ht
  • joalvihe/ohj1ht
  • joeehimm/ohj1ht
  • anvasavi/ohj1ht
  • mhmniskx/ohj1ht
  • rintalsa/ohj1ht
  • veetoivo/ohj1ht
  • rtmatilt/Swatteri
  • maukotos/blackjack
  • karppir/ohj1ht
388 results
Show changes
Commits on Source (14)
Showing
with 390 additions and 25 deletions
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/contentModel.xml
/modules.xml
/.idea.NukkuMatti -harjoitustyö.iml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NukkuMatti -harjoitustyö", "NukkuMatti -harjoitustyö\NukkuMatti -harjoitustyö.csproj", "{1039CA95-7E69-4FCD-8CD2-CC33817F7978}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1039CA95-7E69-4FCD-8CD2-CC33817F7978}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1039CA95-7E69-4FCD-8CD2-CC33817F7978}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1039CA95-7E69-4FCD-8CD2-CC33817F7978}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1039CA95-7E69-4FCD-8CD2-CC33817F7978}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
NukkuMatti -harjoitustyö/NukkuMatti -harjoitustyö/Content/taivas.jpeg

51.6 KiB

using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
namespace NukkuMatti__harjoitustyö;
/// @author eeron
/// @version 14.03.2025
/// <summary>
///
/// </summary>
public class NukkuMatti__harjoitustyö : PhysicsGame
{
public override void Begin()
{
// Kirjoita ohjelmakoodisi tähän
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Jypeli.NET" Version="11.*"/>
<PackageReference Include="Jypeli.FarseerPhysics.NET" Version="2.*"/>
</ItemGroup>
<ItemGroup>
<None Update="Content\taivas.jpeg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\nukkumatti.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
using System;
using System.Collections.Generic;
using Jypeli;
// Eero Salmen tekemä tasohyppelypeli osana ohjelmointi 1 -kurssia. Pelin nimi on NukkuMatti.
// Pelaajan tehtävänä on kuljettaa NukkuMattia tasolta toiselle tippumatta alas.
public class Tasohyppely : PhysicsGame
{
// Muutama vakio arvo määritelty tähän, jotta ne on helpommin hallittavissa samassa paikassa
private const double GravityStrength = -800;
private const double HyppyVoima = 1100;
private const double TasoLeveys = 100;
private const double TasoKorkeus = 10;
private const double PelaajaWidth = 100;
private const double PelaajaHeight = 100;
private const double AlkuperainenHyppyNopeus = 1000;
private const double TasoPoistoMarginaali = 200;
private const double StartingHeight = -20;
private const double FallThreshold = 1200; // Pelaaja saa pudota enintään 1200 yksikköä huippupisteestään
private double highestY;
/// <summary>
/// Pelin keskeiset objektit ja tilamuuttujat
/// </summary>
private PhysicsObject pelaaja;
private bool peliKaynnissa = true;
private GameObject taustakuva;
private Label gameOverTeksti;
private List<PhysicsObject> tasot = new List<PhysicsObject>();
/// <summary>
/// Aloitetaan peli.
/// </summary>
public override void Begin()
{
// Asetetaan painovoima
Gravity = new Vector(0, GravityStrength);
LuoKentta();
LisaaOhjaimet();
LuoGameOverTeksti();
// Ajastin sille, kyinka usein uusia tasoja ilmestyy pelikenttään
Timer tasoAjastin = new Timer();
tasoAjastin.Interval = 1.4;
tasoAjastin.Timeout += LuoTaso;
tasoAjastin.Start();
// Hyppynopeus
pelaaja.Velocity = new Vector(0, AlkuperainenHyppyNopeus);
}
/// <summary>
/// Luodaan peliin kenttä, joka sisältää taustan, pelaajan,
/// aloitustason ja törmäystenkäsittelijän
/// </summary>
private void LuoKentta()
{
LuoTausta();
LuoPelaaja();
// Asetetaan pelaajan ominaisuudet ja lisätään kentälle
pelaaja.Position = new Vector(0, StartingHeight);
highestY = pelaaja.Y;
pelaaja.CanRotate = false;
pelaaja.Restitution = 0;
Add(pelaaja);
// Luodaan aloitustaso
PhysicsObject aloitusTaso = PhysicsObject.CreateStaticObject(200, TasoKorkeus);
aloitusTaso.Position = new Vector(0, -70);
aloitusTaso.Color = Color.White;
aloitusTaso.Tag = "taso";
Add(aloitusTaso);
// Laitetaan kamera seuraamaan pelaajaa
Camera.Follow(pelaaja);
// Lisätään törmäysominaisuus
AddCollisionHandler(pelaaja, "taso", OsuiTasoon);
// Luodaan muutama aloitustaso
for (int i = 0; i < 4; i++)
LuoTaso();
}
/// <summary>
/// Luodaan peliin tausta.
/// </summary>
private void LuoTausta()
{
// Lisätään taustakuva ja sijoitetaan se taustalle
taustakuva = new GameObject(Level.Width * 2, Level.Height * 2);
taustakuva.Image = LoadImage("taivas.jpeg");
taustakuva.Position = Camera.Position;
Add(taustakuva, -1);
}
/// <summary>
/// Luodaan peliin lopetusteksti, joka ilmoittaa pelaajalla, että peli on päättynyt
/// </summary>
private void LuoGameOverTeksti()
{
// Asetetaan pelin päättymis teksti
gameOverTeksti = new Label("HÄVISIT PELIN");
gameOverTeksti.TextColor = Color.Red;
gameOverTeksti.Font = Font.DefaultBold;
gameOverTeksti.Position = new Vector(0, 100);
gameOverTeksti.IsVisible = false;
Add(gameOverTeksti);
}
/// <summary>
/// Luodaan pelaaja-olio ja määritellään sen perusasetukset
/// </summary>
private void LuoPelaaja()
{
//Luodaan hahmo
pelaaja = new PhysicsObject(PelaajaWidth, PelaajaHeight);
pelaaja.Image = LoadImage("nukkumatti.png");
pelaaja.Restitution = 0;
}
/// <summary>
/// Luodaan peliin tasoja.
/// </summary>
private void LuoTaso()
{
// Luodaan useampi taso yhdellä silmukalla
for (int i = 0; i < 1; i++)
{
double x = RandomGen.NextDouble(Level.Left + 100, Level.Right - 100);
double y = Camera.ScreenToWorld(new Vector(0, Screen.Height / 2)).Y + RandomGen.NextDouble(10, 10);
PhysicsObject taso = PhysicsObject.CreateStaticObject(TasoLeveys, TasoKorkeus);
taso.Position = new Vector(x, y);
taso.Color = Color.White;
taso.Tag = "taso";
Add(taso);
tasot.Add(taso);
}
}
/// <summary>
/// Määritellään näppäimistöohjaimet pelaajan liikkumiseen ja pelin lopettamiseen.
/// </summary>
private void LisaaOhjaimet()
{
// Asetetaan komennot näppäimistöltä
Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, null, -400.0);
Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, null, 400.0);
Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
}
/// <summary>
/// Muutetaan pelaajan vaakasuuntaista liikettä annetun nopeuden perusteella.
/// </summary>
/// <param name="nopeus"></param>
private void Liikuta(double nopeus)
{
if (peliKaynnissa)
pelaaja.Velocity = new Vector(nopeus, pelaaja.Velocity.Y);
}
/// <summary>
/// Määritellään pelaajan ja tason törmäys.
/// </summary>
/// <param name="pelaaja"></param>
/// <param name="taso"></param>
private void OsuiTasoon(PhysicsObject pelaaja, PhysicsObject taso)
{
// Törmäys pelaajan ja tason välillä
if (pelaaja.Velocity.Y > 0 && pelaaja.Position.Y < taso.Top)
{
pelaaja.IgnoresCollisionResponse = true;
return;
}
if (pelaaja.Velocity.Y <= 0 && Math.Abs(pelaaja.Bottom - taso.Top) < 5)
{
pelaaja.Y = taso.Top + pelaaja.Height / 2;
pelaaja.Velocity = new Vector(pelaaja.Velocity.X, HyppyVoima);
}
}
/// <summary>
/// Poistetaan ne tasot, jotka poistuvat näkyvistä.
/// </summary>
private void PoistaPoistuvatTasot()
{
// Turhat tasot poistetaan
for (int i = tasot.Count - 1; i >= 0; i--)
{
if (tasot[i].Y < Camera.ScreenToWorld(new Vector(0, -Screen.Height / 2)).Y - TasoPoistoMarginaali)
{
tasot[i].Destroy();
tasot.RemoveAt(i);
}
}
}
/// <summary>
/// Lopetetaan peli, mikäli pelaaja on pudonnut liikaa korkeimmasta saavutetusta pisteestä.
/// </summary>
private void LopetaPeli()
{
// Pelin lopettamiskomento
if (peliKaynnissa)
{
peliKaynnissa = false;
gameOverTeksti.IsVisible = true;
Timer.SingleShot(3.0, Exit);
}
}
/// <summary>
/// Päivitetään pelin tila jokaisella ruudunpäivityksellä,
/// mukaan lukien taustakuvan sijainti ja pelaajan pudotuksen valvonta.
/// </summary>
/// <param name="time"></param>
protected override void Update(Time time)
{
base.Update(time);
// Taustakuva päivittyy kameran liikkeen mukaisesti
taustakuva.Position = taustakuva.Position + (Camera.Position - taustakuva.Position) * 0.1;
PoistaPoistuvatTasot();
if (pelaaja.Y > highestY)
highestY = pelaaja.Y;
// Tarkista, onko pelaaja pudonnut liian pitkän matkan huipustaan
if (highestY - pelaaja.Y > FallThreshold)
LopetaPeli();
}
}
/// <summary>
/// Pääohjelman luokka, joka käynnistää pelin.
/// </summary>
public class Program
{
// Päämetodi, joka luo pelin oliot ja käynnistää pelin.
public static void Main()
{
using (var peli = new Tasohyppely())
peli.Run();
}
}
NukkuMatti -harjoitustyö/nukkumatti.png

246 KiB

NukkuMatti -harjoitustyö/taivas.jpeg

51.6 KiB

suunnitelma/Hahmotelma.jpg

26 KiB

suunnitelma/Nukkumatti.jpg

67 KiB

suunnitelma/esimerkkikuva.png

9.92 KiB

suunnitelma/nukkumatti2.jpg

26 KiB

# Harjoitustyön suunnitelma # Harjoitustyön suunnitelma
(Täydennä oman pelisi tiedot tähän tiedostoon muokkaamalla
tiedostoa tekstieditorissa. Käytä [Markdown-syntaksia](https://about.gitlab.com/handbook/markdown-guide/).
Poista sitten *kaikki* suluilla merkityt ohjetekstit.)
## Tietoja Tietoja
Tekijä: (Etunimi Sukunimi) Tekijä: Eero Salmi
Työ git-varaston osoite: <https://gitlab.jyu.fi/anlakane/ohj1ht> (*Korvaa* tämä osoite oman git-varastosi osoitteella) Työ git-varaston osoite: https://gitlab.jyu.fi/salmiene/ohj1ht
Pelin nimi: (Nimi) Pelin nimi: Nukkumatti
Pelialusta: Windows/macOS/Linux (Valitse alusta) Pelialusta: Windows
Pelaajien lukumäärä: 1/2/3/4 (Valitse pelaajien lukumäärä) Pelaajien lukumäärä: 1
## Pelin tarina Pelin tarina:
(Pelin tarina.) Nukkumatti oli perinteisellä nukutuskierroksellaan, mutta hieroikin huolimattomasti
hiekkaisia käsiä silmiinsä ja nukahti itsekin syvään uneen.
Nyt hän harhailee unissaan ja pomppii tasolta toiselle.
Auta Nukkumattia kulkemaan ylöspäin, jotta hän ei putoa!
## Pelin idea ja tavoitteet
(Pelin idea ja tavoitteet.) Pelin idea ja tavoitteet:
Pelin ideana on ohjata Nukkumattia hyppimään tasolta toiselle, jotta hän etenee ylöspäin pelikentällä eikä putoa maahan.
Pisteitä saa myöhemmin määritellyn aikavälein. Hahmoa liikutellaan sivuittain, ylöspäin oleva liike on vakio. Hahmo ei osu tasoihin
mennessään ylöspäin. Hahmon nopeus kiihtyy mitä pidemmälle peli etenee.
## Hahmotelma pelistä
(Kun olet lisännyt suunnitelmakuvan tähän hakemistoon, linkitä se tähän alle. Alla on esimerkkikuvan linkitys.) ## Hahmotelma pelistä
![Esimerkkikuva](esimerkkikuva.png "Esimerkkikuva") ![Hahmon kuva](Nukkumatti.jpg "Hahmon kuva")
![Hahmotelma](Hahmotelma.jpg "Hahmotelma")
![Hahmo](nukkumatti2.jpg. "Hahmo")
## Toteutuksen suunnitelma ## Toteutuksen suunnitelma
Helmikuu Helmikuu
- (Tavoite 1) - Saa pelaaja liikkeelle siten, että sitä voi liikuttaa sivuille
- (Tavoite 2) - Painovoima: pelaaja tippuu alas, jos se ei osu tasolle
- (Tavoite 3) -Luo yksinkertainen pelikenttä ja tasot
Maaliskuu Maaliskuu
- (Tavoite 1) - Pistelaskuri
- (Tavoite 2) - Pelin päättyminen, mitä tapahtuu?
- (Tavoite 3) - Tiettyjen tasojen saavuttaminen, muuttuuko jokin? Esim. väriteema
Jos aikaa jää Jos aikaa jää
- (Tavoite 1) - Hio yksityiskohtia
- (Tavoite 2) - Ääniefektejä, visuaalisia hienouksia
- (Tavoite 3) \ No newline at end of file