Skip to content
Snippets Groups Projects
Commit fd67d657 authored by Vepsäläinen Noora Ella Julia's avatar Vepsäläinen Noora Ella Julia
Browse files

Koodin muokkaamista

parent 1c38f75d
No related branches found
No related tags found
No related merge requests found
Showing
with 307 additions and 64 deletions
......@@ -9,11 +9,8 @@
<component name="ChangeListManager">
<list default="true" id="37cf41df-2269-448a-9a3a-29d4f82e5d7a" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/.idea.Harjoitustyö/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Harjoitustyö/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/Content/Henri.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/Content/Hiirenloukku.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/Content/Juusto.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/Content/tausta.png" beforeDir="false" afterPath="$PROJECT_DIR$/HenrinJuustoJahti/Content/tausta.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/HenrinJuustoJahti.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HenrinJuustoJahti/HenrinJuustoJahti.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HenrinJuustoJahti/HenrinJuustoJahti.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/HenrinJuustoJahti/HenrinJuustoJahti.csproj" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -37,21 +34,21 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
".NET Project.HenrinJuustoJahti.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "main",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "preferences.lookFeel",
"vue.rearranger.settings.migration": "true"
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;.NET Project.HenrinJuustoJahti.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.lookFeel&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}]]></component>
}</component>
<component name="RunManager">
<configuration name="HenrinJuustoJahti" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
......@@ -83,6 +80,11 @@
<workItem from="1740155541992" duration="281000" />
<workItem from="1740157597306" duration="3692000" />
<workItem from="1740236286842" duration="5902000" />
<workItem from="1741012796406" duration="2704000" />
<workItem from="1741333267201" duration="349000" />
<workItem from="1741333653965" duration="111000" />
<workItem from="1741336503791" duration="3502000" />
<workItem from="1741450707351" duration="3084000" />
</task>
<servers />
</component>
......@@ -90,6 +92,17 @@
<option name="version" value="3" />
</component>
<component name="UnityProjectConfiguration" hasMinimizedUI="false" />
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
......
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/projectSettingsUpdater.xml
/modules.xml
/.idea.HenrinJuustoJahti.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="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>
\ No newline at end of file
<?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
Harjoitustyö/HenrinJuustoJahti/Content/Henri.png

41.4 KiB | W: | H:

Harjoitustyö/HenrinJuustoJahti/Content/Henri.png

197 KiB | W: | H:

Harjoitustyö/HenrinJuustoJahti/Content/Henri.png
Harjoitustyö/HenrinJuustoJahti/Content/Henri.png
Harjoitustyö/HenrinJuustoJahti/Content/Henri.png
Harjoitustyö/HenrinJuustoJahti/Content/Henri.png
  • 2-up
  • Swipe
  • Onion skin
Harjoitustyö/HenrinJuustoJahti/Content/Hiirenloukku.png

4.32 KiB

Harjoitustyö/HenrinJuustoJahti/Content/Juusto.png

6.19 KiB

Harjoitustyö/HenrinJuustoJahti/Content/tausta.png

226 KiB

using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
namespace HenrinJuustoJahti;
/// @author noora
/// @version 21.02.2025
/// <summary>
///
/// Peli, jossa Henri hiirulainen kerää juustoja ja varoo hiirenloukkuja.
/// </summary>
public class HenrinJuustoJahti : PhysicsGame
{
public const double NOPEUS = 200;
public const double HYPPYNOPEUS = 600;
public PhysicsObject pelaaja1;
/// <summary>
/// nopeuden vakio.
/// </summary>
private const double NOPEUS = 200;
/// <summary>
/// Hyppynopeuden vakio.
/// </summary>
private const double HYPPYNOPEUS = 750;
/// <summary>
/// Julkinen pelaaja.
/// </summary>
private PlatformCharacter pelaaja;
/// <summary>
/// Pistelaskuri.
/// </summary>
private IntMeter pistelaskuri;
/// <summary>
/// Pistenäyttö.
/// </summary>
private Label pistenaytto;
/// <summary>
/// Juustojen määrä.
/// </summary>
private int juustojenMaara;
/// <summary>
/// Juuston kuva.
/// </summary>
Image juustoKuva = LoadImage("Juusto.png");
/// <summary>
/// Hiirenloukun kuva.
/// </summary>
Image hiirenloukkuKuva = LoadImage("Hiirenloukku.png");
/// <summary>
/// Henri hiirulaisen kuva.
/// </summary>
Image henrinKuva = LoadImage("Henri.png");
/// <summary>
/// Tämä ohjelma kutsuu aliohjelmia ja pyörittää peliä.
/// </summary>
public override void Begin()
{
Gravity = new Vector(0, -1000);
LuoKentta();
LisaaPelaaja();
LisaaNappaimet();
LuoPistelaskuri();
}
public void LuoKentta()
/// <summary>
/// Tämä aliohjelma luo pelikentän, sekä lisää sinne pelaajan ja tasot.
/// </summary>
private void LuoKentta()
{
Level.Size = new Vector(1920, 1080);
SetWindowSize(1920, 1080);
Level.Background.Image = LoadImage("tausta");
Level.Background.Color = Color.SkyBlue;
LisaaTaso(new Vector(0, -200), 1600, 40);
LisaaPelaaja(new Vector(0, -180), 40, 40);
LuoTasot();
CenterWindow();
Level.CreateBorders();
Gravity = new Vector(0, -1000);
Camera.Follow(pelaaja);
Camera.ZoomFactor = 1.2;
}
public void LisaaPelaaja()
/// <summary>
/// Tämä aliohjelma luo taso, johon pelaaja syntyy.
/// </summary>
/// <param name="paikka"></param>
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
/// <returns></returns>
private PhysicsObject LisaaTaso(Vector paikka, double leveys, double korkeus)
{
pelaaja1 = new PhysicsObject(100, 100);
Image pelaajankuva = LoadImage("Henri");
pelaaja1.Image = pelaajankuva;
pelaaja1.Shape = Shape.Circle;
pelaaja1.Position = new Vector(-500, -300);
pelaaja1.CanRotate = false;
pelaaja1.Restitution = 0;
Add(pelaaja1);
PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
taso.Position = paikka;
taso.Color = Color.DarkBrown;
Add(taso);
return taso;
}
public void LisaaNappaimet()
/// <summary>
/// Tämä aliohjelma luo satunnaisesti tasoja kutsumalla LisaaTaso aliohjelmaa.
/// </summary>
private void LuoTasot()
{
double keskipisteX = pelaaja.Position.X;
double y = -50;
Random rng = new Random();
juustojenMaara = 0;
for (int rivi = 0; rivi < 8; rivi++) // Määrittää, kuinka korkealle tasoja luodaan.
{
for (int sarake = -2; sarake <= 2; sarake++)
{
double tasoX = keskipisteX + sarake * 250 + rng.Next(-50, 50);
double tasoY = y + rivi * 150 + rng.Next(-20, 20);
PhysicsObject taso = LisaaTaso(new Vector(tasoX, tasoY), 100, 20);
bool onVihollinen = rng.Next(100) < 30;
LisaaJuustoTaiLoukku(new Vector(taso.Position.X, taso.Position.Y + (taso.Height / 2) + 10), 20, 20, onVihollinen);
if (!onVihollinen)
{
juustojenMaara++;
}
}
}
}
/// <summary>
/// Tämä aliohjelma lisää peliin juuston ja hiirenloukun.
/// </summary>
/// <param name="paikka"></param>
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
/// <param name="onVihollinen"></param>
private void LisaaJuustoTaiLoukku(Vector paikka, double leveys, double korkeus, bool onVihollinen = false)
{
PhysicsObject esine = new PhysicsObject(leveys, korkeus, Shape.Circle);
esine.Position = paikka;
esine.IgnoresExplosions = true;
if (onVihollinen)
{
esine.Color = Color.Red;
esine.Tag = "vihollinen";
esine.Image = hiirenloukkuKuva;
esine.Size *= 5;
}
else
{
esine.Color = Color.Yellow;
esine.Tag = "tahti";
esine.Image = juustoKuva;
esine.Size *= 4;
}
Add(esine);
}
/// <summary>
/// Tämä aliohjelma lisää pelii pelaajan eli Henri hiirulaisen.
/// </summary>
/// <param name="paikka"></param>
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
private void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
{
pelaaja = new PlatformCharacter(leveys, korkeus);
pelaaja.Position = paikka;
pelaaja.Mass = 4.0;
pelaaja.Color = Color.Gray;
pelaaja.Image = henrinKuva;
pelaaja.Size *= 1.5;
Add(pelaaja);
Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Liikuta vasemmalle", pelaaja1, new Vector(-NOPEUS, 0));
Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liikuta oikealle", pelaaja1, new Vector(NOPEUS, 0));
Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, "Pysähtyy vasemmalle", pelaaja1);
Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, "Pysähtyy oikealle", pelaaja1);
Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Hyppää", pelaaja1);
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
AddCollisionHandler(pelaaja, "tahti", TormaaJuustoon);
AddCollisionHandler(pelaaja, "vihollinen", PelaajaKuolee);
}
/// <summary>
/// Tämä aliohjelma lisää peliin näppäinohjaimet.
/// </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.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -NOPEUS);
Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja, NOPEUS);
Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, HYPPYNOPEUS);
}
private void LiikutaPelaajaa(PhysicsObject hahmo, Vector nopeus)
/// <summary>
/// Tämä aliohjelma pistää Henrin liikkumaan.
/// </summary>
/// <param name="henri"></param>
/// <param name="nopeus"></param>
private void Liikuta(PlatformCharacter henri, double nopeus)
{
hahmo.Velocity = new Vector(nopeus.X, hahmo.Velocity.Y);
henri.Walk(nopeus);
}
private void PysaytaPelaaja(PhysicsObject hahmo)
/// <summary>
/// Tämä aliohjelma pistää Henrin hyppäämään.
/// </summary>
/// <param name="henri"></param>
/// <param name="nopeus"></param>
private void Hyppaa(PlatformCharacter henri, double nopeus)
{
hahmo.Velocity = new Vector(0, hahmo.Velocity.Y);
henri.Jump(nopeus);
}
private void Hyppaa(PhysicsObject hahmo)
/// <summary>
/// Tämä aliohjelma lisää toiminnon, kun pelaaja kerää juuston. Tämän lisäksi aliohjelma lisää toiminnon
/// sille, kun pelaaja on kerännyt kaikki juustot ja voittaa pelin.
/// </summary>
/// <param name="henri"></param>
/// <param name="juusto"></param>
private void TormaaJuustoon(PhysicsObject henri, PhysicsObject juusto)
{
hahmo.Velocity = new Vector(hahmo.Velocity.X, HYPPYNOPEUS);
juusto.Destroy();
pistelaskuri.Value += 1;
MessageDisplay.Clear(); // Poistaa edelliset viestit
MessageDisplay.Add("JEEEEE löysit JUUSTOA!");
if (pistelaskuri.Value >= juustojenMaara)
{
Voitto();
}
}
/// <summary>
/// Tämä aliohjelma lisää toiminnon, kun pelaaja törmää hiirenloukkuun ja häviää pelin.
/// </summary>
/// <param name="henri"></param>
/// <param name="hiirenloukku"></param>
private void PelaajaKuolee(PhysicsObject henri, PhysicsObject hiirenloukku)
{
Label viesti = new Label("VOI EI, jäit kiinni HIIRENLOUKKUUN :(");
viesti.TextColor = Color.White;
viesti.Font = new Font(50);
viesti.X = 0;
viesti.Y = 0;
Add(viesti);
pelaaja.Destroy();
Timer.SingleShot(2, Exit);
}
/// <summary>
/// Tämä aliohjelma lisää viestin kun pelaaja on kerännyt kaikki juustot.
/// </summary>
private void Voitto()
{
Label voittoViesti = new Label("HYVÄ LÖYSIT KAIKKI JUUSTOT!!!");
voittoViesti.TextColor = Color.Green;
voittoViesti.Font = new Font(50);
voittoViesti.Position = Vector.Zero;
Add(voittoViesti);
Timer.SingleShot(2.0, Exit);
}
/// <summary>
/// Tämä aliohjelma kerää tietoa kerättyjen juustojen lukumäärästä.
/// </summary>
private void LuoPistelaskuri()
{
pistelaskuri = new IntMeter(0);
pistenaytto = new Label();
pistenaytto.X = Screen.Left + 100;
pistenaytto.Y = Screen.Top - 40;
pistenaytto.TextColor = Color.Black;
pistenaytto.Color = Color.White;
pistenaytto.Title = "Pisteet: ";
pistenaytto.BindTo(pistelaskuri);
Add(pistenaytto);
}
}
\ No newline at end of file
......@@ -20,10 +20,13 @@
<Content Include="Content\Henri.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Remove="Content\tausta.png" />
<Content Include="Content\tausta.png">
<Content Include="Content\Hiirenloukku.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Juusto.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Remove="Content\tausta.png" />
</ItemGroup>
</Project>
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