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
  • tie/ohj1/2023s/ohj1ht
  • ojkoykka/ohj1ht
  • lemaline/ohj-1-ht-leo
  • altuoles/ohj1ht
  • ajviitan/ohj1ht
  • esahakki/ohj1ht
  • olieemka/ohj1ht
  • keinkont/ohj1ht
  • jejojuha/ohj1ht
  • parmisee/sidotut-sielut
  • wkoskine/kolikkopeli
  • aimaasko/ohj1ht
  • rapalare/ohj1ht
  • arsepiip/ohj1ht
  • tuliat/ohj1ht
  • khlaine/ohj1ht
  • thesanos/map-harkka
  • taanlaak/ohj1ht
  • avkesti/ohj1ht
  • siniseyt/ohj1ht
  • vesal/ohj1hta
  • anhahyvo/ohj1ht
  • jcvehman/leppakerttu
  • kmjaaske/ohj1ht
  • aapiippu/ohj1ht
  • reelmann/ohj1ht
  • ijkurki/ohj1ht
  • ttkelaw/ohj1ht
  • koallaht/ohj1ht
  • vesal/ohj1ht3
  • pasaikon/ohj-1-ht
  • piipaisa/ohj1ht
  • hkoktany/ohj1ht
  • pamahete/ohj1ht
  • hvriikon/ohj1ht
  • uekolehm/ohj1ht
  • njsaari/ohj1ht
  • lampiemw/rallipeli
  • tkmeskan/ohj1ht
  • aurmirle/ohj1ht
  • grohju/ohj1ht
  • awsorri/ohj1ht
  • jamamokk/ohj1ht
  • sakksama/ohj1ht
  • levalaaa/ohj1ht
  • jpjturtu/ohj1ht
  • vvvkorhv/ohj1ht
  • torkalju/s2023ohj1ht
  • koskelju/ohj1ht
  • eimaki/ohj1ht
  • matuhakk/kauppakassi
  • ollvilhi/ohj1ht
  • nktuorin/ohj1ht
  • elpeviva/ohj1ht
  • kumpuvex/ohj-1-ht
  • mvpalola/ohj1ht
  • pasonnpe/ohj1ht
  • tornhale/ohj1ht
  • iljitesa/ohj1ht
  • ruusii/ohj1ht
  • javirjo/ohj1ht
  • katahe/ohj1ht
  • niktapli/ohj1ht
  • vaalanti/ohj1ht
  • eijuhokk/ohj1ht
  • ricroos/ohj1ht
  • jjmalizy/ohj1ht
  • kirskaxt/ohj1ht
  • haemhaat/ohj1ht
  • korhanjo/ohj1ht
  • runnjuta/ohj1ht
  • jueeasik/ddr-tetris
  • kojalewa/ohj1ht
  • vejokeso/ohj1ht
  • koskeltu/ohj1ht
  • eorhala/ohj1ht
  • kiukklju/ohj1ht
  • oneemasa/ohj1ht
  • kylmsama/ohj1ht
  • mikrkonk/ohj1ht
  • viikarma/ohj1ht
  • jesvilju/ohj1ht
  • viekataj/ohj1ht
  • eerikano/ohj1ht
  • vevejuha/ohj1ht
  • ekpakkal/ohj1ht
  • otjuahos/ohj1ht
  • rajanije/ohj1ht
  • rintahe/ohj1ht
  • mpaavola/ohj1ht
  • lalaajal/ohj1ht
  • tevesiku/ohj1ht
  • malmente/ohj1ht
  • lahdelai/ohj1ht
  • lehtlrvt/syksy-2023-project
  • tuilkark/ohj1ht
  • shurmeri/ohj1ht
  • npura/ohj1ht
  • ljkarna/ohj1ht
  • pejokarj/ohj1ht
  • hytosama/ohj1ht
  • arpevile/ohj1ht
  • tspuhari/ohj1ht
  • meematma/ohj1ht
  • msvekkel/ohj1ht
  • lskumpus/temppelirosvo
  • lskumpus/ohj1ht
  • parikkp/ohj1ht
  • oopummww/sahkonhintalaskuri
  • emjowebe/ohj1ht
  • esolin/ohj1ht
  • anjakinn/ohj1ht
  • eronenve/ohj1ht
  • kautuoee/sijottajat
  • ammarttu/seikkailupeli
  • jhkortww/ohj1ht
  • tiainela/ohj1ht
  • lajoraiv/avaruushyokkaajat
  • vjkoski/ohj1ht
  • limmakyn/ohj1ht
  • kreenk/ohj1ht
  • tynnijtt/ohj1ht
  • jovesaar/ohj1ht
  • jmsutizy/ohj-1-harjoitustyo
  • veijantt/asteroidpossu
  • krseppen/ohj1ht
  • sjlihava/ohj1ht
  • kmpaanan/ohj1ht
  • emelmann/ohj1ht
  • sasavoli/jaatelokesa
  • alarojal/take-them-all
  • huhtjyil/pysakointisimulaattori
  • ttaho/ohj1ht
  • koivulmi/omenat
  • tosajaas/ohj1ht
  • sievanee/ohj1ht
  • vavavima/ohj1ht
  • adjotuhk/ohj1ht
  • heijoshe/ohj1ht
  • sammakko/kohti-aaretonta
  • anneveka/kohti-aaretonta
  • piippoje/lentokonepeli
  • emalmale/frog-jump
  • niemlexy/ohj1ht
  • jasajuyl/ohj1ht
  • peoswasa/pirtin-puolustus
  • mzitting/ohj1ht
  • heikkiaa/ohj1ht
  • mattarma/ohj-1-ht
  • kiiskiev/ohj1ht
  • noelleht/ohj1ht
  • vtsarkka/ohj1ht
  • majuvaaj/ohj-1-ht
  • eiekuiri/ohj1ht2
  • moilanii/ohj1ht
  • jpmoilan/ohj1ht
  • lipavaxy/lipavaxy
  • varauhal/ohj1ht
  • seastrom/ohj1ht3
  • jlinnik/metsakissa
  • mipeolli/ohj1ht
  • majugroh/ohj1ht
  • aijaeeus/ohj1ht
  • anjopitk/ohj1ht
  • ulentika/ohj1ht
  • paajooni/ohj1ht
  • avfresta/ohj-1-harjoitustyo-peli
  • jueesark/ohj1ht
  • sulasaal/ohj1ht
  • tervomhj/ohj1ht
  • pelkkezz/ohj1ht
  • otjalouk/hoylaajanpaluu
  • jupeupol/ohj1ht
  • jojuhemu/ilmailusaatiedotus
  • karnlazy/ohj1ht
  • tornbeev/eetu-t-ht
  • makelkjt/ohj1ht
  • masakoiv/ohj1ht
  • jerantat/ohj1ht
  • reevirta/ohj1ht
  • junijuku/ohj1ht
  • oaaltola/ohj1ht
  • renmikta/ohj1ht
  • kuntekys/ohj1ht
  • emhaauha/ohj1ht
  • lijovest/ohj1ht
  • sjuskivs/ohj1ht
  • joohirvo/ohj1ht
  • rekallio/ohj1ht
  • tuzuneru/ohj1ht
  • jacheryy/vapaa-maailma-ht
  • salompxs/ohj1ht
  • vamavatu/peliprojekti
  • mikalese/project-color
  • vimimalu/ohj1ht
  • vehartzz/ohj1ht
  • anlutuho/vilsun-seikkailu
  • saadmikk/ohj-1-ht-2
  • topevoud/ohj1ht
  • mvhonkzz/kana-kana
  • kopperp/ohj1ht
  • jutalapp/ohj1ht
  • jejajoko/ohj1ht
  • suholaju/Webbi
  • askuisyy/ohj1ht
  • samjaajo/ohj1ht
  • penttu/ohj1ht
  • ekkoykka/ohj1ht
  • tamakark/ohj1ht
  • ckbboman/ohj1ht
  • jomuhaat/ohj-1-ht
  • tslahtin/ohj1ht
  • salmatel/ohj1ht
  • linnahee/pelastapeikoilta
  • pirhonmx/ohj1ht
  • perkem/ohj1ht
  • ssniinim/ohj-1-ht
  • nikaleko/ajope
  • heijohra/ohj1ht
  • kaikkoju/ohj1ht
  • rekanyys/ohj1ht
  • nijomagg/ohj1ht
  • solismpa/ohj1ht
  • enhekorp/ohj1ht
  • myahsumy/h-tohj-1
  • nynalynn/ohj1ht
  • iitojopi/ohj1ht
  • harmjosa/ohj1ht
  • joalsaun/ohj-1-ht
  • jimsebna/ohj1ht
  • jcmbergg/ohj1ht
  • vemaveij/ohj-1-ht
232 results
Show changes
Commits on Source (4)
Showing
with 811 additions and 0 deletions
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/.idea.Harjotustyo.iml
/modules.xml
/contentModel.xml
# 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

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Harjotustyo", "Harjotustyo\Harjotustyo.csproj", "{01585FA9-2AD9-4455-97F9-7542A180AB1A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{01585FA9-2AD9-4455-97F9-7542A180AB1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{01585FA9-2AD9-4455-97F9-7542A180AB1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{01585FA9-2AD9-4455-97F9-7542A180AB1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{01585FA9-2AD9-4455-97F9-7542A180AB1A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
######################################################## ##################################################################### ####################################
######################################################## ##################################################################### ####################################
### ### ### ########
### #################### ### ### ########
### #################### ### ##### ##### ### ################## ########
### ############## ### ##### ##### ### ################## ###
### ##### ##### ##### ### ###
### ##### #### ##### ##### ###
### ##### #### ##### ###
### ##### #### ################### ##### ############### ###
### #### ################### ##### ############### ###
### ##### ############### ###
##### ### ###
##### ### ## ###
### ##### ### ### ## ###
### ################################### ##### ### ## ###
### ################################### ##### ### ## ###
### ################################### ##### ####### ## ###
### ### #### ####### ## ###
### ### #### ### ## ###
### #### ### ## ###
### #### ### ## ###
######################################################## ######################################################################## #################################
######################################################## ######################################################################## #################################
### ## ###
### ###
### ### ## ###
### ### ## ####### ##################### ###
### ### ########## ######## ##################### ###
### ## ########## ######## ### ###
### ## ## ## ### ###
### ## ## ############# ### ###
### ## ## ### ###
### ## ## ###
### ########### ## ## ###
### ########### ## ###
### ## ###
### ## ###
######################################################## ##################################################################### ####################################
######################################################## ##################################################################### ####################################
\ No newline at end of file
#######################
#######################
#######################
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ## ########
######## ####### ## ########
######## ####### ## ########
######## ### ## ########
######## ### ## ########
######## ### ## ########
######## ### ############## ########
######## ############## ########
######## ########
######## ########
######## ########## ############# ########
######## # # ########
######## # # ########
###### # # ######
###### # # ######
###### ######
###### ######
###### # # ######
###### # # ######
###### # # ######
###### # # ######
###### ################## ##### ######
######## ########
######## ############## ########
######## ############## ########
######## ## ### ########
######## ## ### ########
######## ## ### ########
######## ## ### ########
######## ## ####### ########
######## ## ####### ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ########
######## ##########
######## ##########
######## ##########
######## ########
######## ########
######## ########
#####################
#####################
#####################
################################################################################################################################################################
################################################################################################################################################################
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ######
### ###
### ###
###### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### ###
### ###
################################################################################################################################################################
################################################################################################################################################################
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Dynamic;
using System.Net.Mime;
using System.Net.Sockets;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
namespace Harjotustyo;
/// @author Niko Koskinen
/// @version 17.11.2023
///
/// <summary>
/// Vaatii korjausta:
/// Pelaajan kuva (ja samalla vihollisen kuva) -- Hoidossa
///
/// Vihollisen spawnaus seinän sisään
/// pelin päättyminen -- hoidossa jollain tasolla....
/// top 3 lista (mahd taulukolla ja loopilla?) 2 kpl aijoille ja kolikoille
///
/// Siistiminen
/// virheiden korjaus
///
/// </summary>
public class Vihollinen : PhysicsObject
{
private IntMeter vihollisenTerveys = new IntMeter(2, 0, 2);
public IntMeter TerveysLaskuri
{
get { return vihollisenTerveys; }
}
public Vihollinen(double leveys, double korkeus)
: base(leveys, korkeus)
{
vihollisenTerveys.LowerLimit += delegate { this.Destroy(); };
}
}
public class Auto : PhysicsObject
{
private IntMeter PelaajanTerveys = new IntMeter(4, 0, 4);
public IntMeter TerveysLaskuri
{
get { return PelaajanTerveys; }
}
public Auto(double leveys, double korkeus) : base(40, 20)
{
PelaajanTerveys.LowerLimit += delegate { this.Destroy(); };
}
}
public class Harjotustyo : PhysicsGame
{
private IntMeter pistelaskuri; //Luo pistelaskurin, joka laskee kolikoita (pisteitä)
private DoubleMeter elamalaskuri; //Luo pelaajalle ja vihollisille elämälaskurin
private EasyHighScore topLista1 = new EasyHighScore();
private EasyHighScore topLista2 = new EasyHighScore();
Image pelaajanKuva = LoadImage("UusiAuto.png"); //Auton kuva pelaajaa varten
Auto pelaaja;
public override void Begin()
{
Alkuvalikko();
}
/// <summary>
/// Luodaan pelaaja ja määritellään sille ominaisuuksia
/// </summary>
///
public void LuoPelaaja()
{
pelaaja = new Auto(40, 20);
//Pelaajan muoto tai kuva
pelaaja.Shape = Shape.Rectangle;
pelaaja.Tag = "pelaaja";
Add(pelaaja);
pelaaja.MaxVelocity = 500; // maks nopeus
pelaaja.Restitution = 0.5;
pelaaja.MomentOfInertia = 200;
pelaaja.MaxAngularVelocity = 50;
AddCollisionHandler(pelaaja, "kolikko", KeraaKolikon);
AddCollisionHandler(pelaaja, "vihu", Kolari);
Camera.Follow(pelaaja);
Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaav, "Käänny vasemmalle", pelaaja);
Keyboard.Listen(Key.Left, ButtonState.Released, Pysayta, null, pelaaja);
Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaao, "Käänny oikealle", pelaaja);
Keyboard.Listen(Key.Right, ButtonState.Released, Pysayta, null, pelaaja);
Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaaE, "Eteen", pelaaja);
Keyboard.Listen(Key.Up, ButtonState.Released, Hidasta, null, pelaaja);
Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaaT, "Taakse", pelaaja);
Keyboard.Listen(Key.Down, ButtonState.Released, Hidasta, null, pelaaja);
Keyboard.Listen(Key.Q, ButtonState.Pressed, Tauko, "Peli pauselle");
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
/// <summary>
/// Aliohjelma kertoo mitä tapahtuu kun pelaaja kerää kolikon
/// </summary>
/// <param name="pelaaja">kuka kerää</param>
/// <param name="kolikko">minkä kerää</param>
/// Lopputulema: Pelaaja saa pisteen, kolikko katoaa ja jonnekkin ilmaantuu uusi kolikko
///
public void KeraaKolikon(PhysicsObject Auto, PhysicsObject kolikko)
{
pistelaskuri.Value += 1;
kolikko.Destroy();
LuoKolikko();
}
/// <summary>
/// Mitä tapahtuu kun pelaaja ja vihollinen törmäävät
/// </summary>
/// <param name="Auto"></param>
/// <param name="vihu"></param>
public void Kolari(PhysicsObject Auto, PhysicsObject vihu)
{
if (vihu.Tag.ToString() == "vihu") ((Auto)Auto).TerveysLaskuri.Value--;
elamalaskuri.Value --;
if (pelaaja.TerveysLaskuri.Value <= 0) PeliPaattyy();
}
/// <summary>
/// Mitä tapahtuu kun pelaajalta loppuvat elämät
/// </summary>
public void PeliPaattyy()
{
MultiSelectWindow loppu = new MultiSelectWindow("Peli päättyi", "Alkuun", "Lopeta");
Add(loppu);
loppu.AddItemHandler(0, Alkuun);
loppu.AddItemHandler(1, Exit);
}
/// <summary>
/// Pelaajan liikkumiseen liittyvät komennot
/// </summary>
/// <param name="pelaaja">Olio jota komennot koskevat</param>
public void LiikutaPelaajaaE(PhysicsObject pelaaja)
{
Vector pelaajanSuunta = Vector.FromLengthAndAngle(1000.0, pelaaja.Angle);
pelaaja.Push(pelaajanSuunta);
}
public void LiikutaPelaajaaT(PhysicsObject pelaaja)
{
Vector pelaajanSuunta = Vector.FromLengthAndAngle(-1000.0, pelaaja.Angle);
pelaaja.Push(pelaajanSuunta);
}
public void KaannaPelaajaav(PhysicsObject auto)
{
pelaaja.ApplyTorque(1000);
}
public void KaannaPelaajaao(PhysicsObject pelaaja)
{
pelaaja.ApplyTorque(-1000);
}
public void Pysayta(PhysicsObject pelaaja)
{
pelaaja.StopAngular();
}
public void Hidasta(PhysicsObject pelaaja)
{
pelaaja.LinearDamping = 2.50;
}
/// <summary>
/// Tason luomisen tapahtumat
/// </summary>
public void TasonLuominen()
{
LuoPelaaja(); //Pelaaja ilmaantuu tasoon
LuoAikalaskuri(); //Pelaajalla on aikalaskuri
LuoVihollinen(); //Luodaan ensimmäinen vihollinen
LuoPisteLaskuri(); //Pelaajalla on pistelaskuri
LuoElamalaskuri(); //Lisätään palkki näyttämään paljon pelaajaalla on elämää jäljellä
Timer ajastin = new Timer(); //Ajastin tuomaan tasoon uuden vihollisen tietyin väliajoin
ajastin.Interval = 10; //Kuinka usein uusia vihollisia ilmaantuu
ajastin.Timeout += LuoVihollinen;
ajastin.Start();
for (int i = 0; i < 3; i++)
{
LuoKolikko();
} //Tasoon lisätään 3 kpl kolikoita
}
/// <summary>
/// Pelin alussa ilmaantuva valikko
/// </summary>
public void Alkuvalikko()
{
MultiSelectWindow alkuvalikko =
new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Ennätykset", "Lopeta");
alkuvalikko.AddItemHandler(0, AloitaPeli); //Siirtyy taso valikkoon
alkuvalikko.AddItemHandler(1, ParhaatPisteet); //Näyttää top listat
alkuvalikko.AddItemHandler(2, Exit); //Peli suljetaan
Add(alkuvalikko);
}
/// <summary>
/// Valikko josta valitaan taso
/// </summary>
public void AloitaPeli()
{
MultiSelectWindow kentat =
new MultiSelectWindow("Valitse taso", "Taso 1", "Taso 2", "Taso 3", "Yllätä mut", "Palaa");
kentat.AddItemHandler(0, LuoTaso1); //Luo tason 1
kentat.AddItemHandler(1, LuoTaso2); //Luo tason 2
kentat.AddItemHandler(2, LuoTaso3); //Luo tason 3
kentat.AddItemHandler(3, YllataMut); //Arpoo tasoista 1-3 jonkun
kentat.AddItemHandler(4, Alkuvalikko); //Palaa alkuvalikkoon
Add(kentat);
}
/// <summary>
/// Top listat
/// </summary>
public void ParhaatPisteet()
{
Label otsikko = new Label("Parhaat tulokset");
otsikko.Y = Screen.Top - 50;
otsikko.TextColor = Color.Black;
Add(otsikko);
Label teksti1 = new Label("Eniten kolikoita (lkm, pvm, nimi)");
teksti1.X = Screen.Left + 150;
teksti1.Y = Screen.Top - 150;
teksti1.TextColor = Color.Black;
Add(teksti1);
Label teksti2 = new Label("Pisimpään selvinneet (aika, pvm, nimi)");
teksti2.X = Screen.Right - 150;
teksti2.Y = Screen.Top - 150;
teksti2.TextColor = Color.Black;
Add(teksti2);
string[,] kolikoita = {{"lkm", "pvm", "nimi"},{"lkm", "pvm", "nimi"}, {"lkm", "pvm", "nimi"}};
}
/// <summary>
/// Tason luovat aliohjelmat
/// </summary>
public void LuoTaso1()
{
TileMap ruudut = TileMap.FromLevelAsset("EkaTaso.txt");
ruudut.SetTileMethod('#', LuoSeina);
ruudut.Execute(20, 20);
Level.CreateBorders();
TasonLuominen();
}
public void LuoTaso2()
{
TileMap ruudut = TileMap.FromLevelAsset("TokaTaso.txt");
ruudut.SetTileMethod('#', LuoSeina);
ruudut.Execute(20, 20);
Level.CreateBorders();
TasonLuominen();
}
public void LuoTaso3()
{
TileMap ruudut = TileMap.FromLevelAsset("KolmasTaso.txt");
ruudut.SetTileMethod('#', LuoSeina);
ruudut.Execute(20, 20);
Level.CreateBorders();
TasonLuominen();
}
/// <summary>
/// Aliohjelma, joka arpoo tason
/// </summary>
public void YllataMut()
{
int taso = RandomGen.NextInt(0, 3);
switch (taso)
{
case 0:
LuoTaso1();
break;
case 1:
LuoTaso2();
break;
case 2:
LuoTaso3();
break;
}
}
/// <summary>
/// Tasoissa olevien seinien luonti
/// </summary>
/// <param name="paikka">Sijainti</param>
/// <param name="leveys">Leveys mitta</param>
/// <param name="korkeus">pituus mitta</param>
public void LuoSeina(Vector paikka, double leveys, double korkeus)
{
PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
seina.Position = paikka;
seina.Shape = Shape.Rectangle;
seina.Color = Color.DarkGray;
seina.Tag = "seina";
Add(seina);
}
/// <summary>
/// Vihollisen luominen
/// </summary>
/// <param name="sijainti"></param>
public void LuoVihollinen()
{
Vihollinen vihu = new Vihollinen(40, 20);
vihu.Tag = "vihu";
vihu.Shape = Shape.Rectangle;
vihu.Color = Color.Red;
vihu.Position = Level.GetRandomPosition();
vihu.TerveysLaskuri.Value--;
AddCollisionHandler(vihu, "seinä", VihuSeinaa);
FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
vihu.Brain = seuraajanAivot;
seuraajanAivot.Speed = 200;
seuraajanAivot.TurnWhileMoving = true;
Add(vihu);
}
/// <summary>
/// Aliohjelma pyrkii saamaan vihollisen pois seinän sisältä
/// </summary>
/// <param name="vihu">kuka pois</param>
/// <param name="seina">mistä pois</param>
public void VihuSeinaa(PhysicsObject vihu, PhysicsObject seina)
{
if (vihu.Tag.ToString() == "vihu") ((Vihollinen)vihu).TerveysLaskuri.Value--;
}
/// <summary>
/// Luo aikalaskurin
/// </summary>
public void LuoAikalaskuri()
{
Timer aikalaskuri = new Timer();
aikalaskuri.Start(); //Laskuri alkaa kun taso aloitetaan
Label aikanaytto = new Label();
aikanaytto.TextColor = Color.Yellow;
aikanaytto.DecimalPlaces = 1;
aikanaytto.BindTo(aikalaskuri.SecondCounter);
aikanaytto.X = Screen.Right - 40;
aikanaytto.Y = Screen.Top - 20;
Add(aikanaytto);
}
/// <summary>
/// Luo laskurin, joka laskee pisteitä
/// </summary>
public void LuoPisteLaskuri()
{
pistelaskuri = new IntMeter(0); //Laskuri alkaa nollasta
Label pistenaytto = new Label();
pistenaytto.X = Screen.Left + 60;
pistenaytto.Y = Screen.Top - 20;
pistenaytto.TextColor = Color.Yellow;
pistenaytto.Title = "Kolikoita: ";
pistenaytto.BindTo(pistelaskuri);
Add(pistenaytto);
}
/// <summary>
/// Luo palkin, joka kuvaa paljon pelaajalla on elämää jäljellä
/// </summary>
public void LuoElamalaskuri()
{
elamalaskuri = new DoubleMeter(4);
elamalaskuri.MaxValue = 4;
ProgressBar elamapalkki = new ProgressBar(150, 20);
elamapalkki.Y = Screen.Top - 20;
elamapalkki.BindTo(elamalaskuri);
Add(elamapalkki);
}
/// <summary>
/// Kolikon luonti
/// </summary>
public void LuoKolikko()
{
PhysicsObject kolikko = new PhysicsObject(10, 10); //Kolikon mitat
kolikko.Tag = "kolikko"; //Tagi johon kolikko on liitetty
Vector sijainti = Level.GetRandomPosition(); //Kolikon sijainti tasossa on satunnainen
kolikko.Position = sijainti;
kolikko.Shape = Shape.Circle;
kolikko.Color = Color.Yellow;
Add(kolikko);
AddCollisionHandler(kolikko, "seina", Jumi); //Estää kolikon jäämistä jumiin seinän sisään
}
/// <summary>
/// Estää kolikon jäämistä seinän sisään
/// </summary>
public void Jumi(PhysicsObject kolikko, PhysicsObject seina)
{
kolikko.Destroy();
LuoKolikko();
}
/// <summary>
/// Luo taukovalikon
/// </summary>
private void Tauko()
{
if (IsPaused)
{
Pausevalikko();
}
else
{
Pausevalikko();
}
Pause();
}
/// <summary>
/// Taukovalikon sisältö
/// </summary>
public void Pausevalikko()
{
MultiSelectWindow tauko = new MultiSelectWindow("Pause", "Jatka", "Alkuvalikkoon");
tauko.AddItemHandler(0, Pause); //Jatka painike jatkaa peliä
tauko.AddItemHandler(1, Alkuun); //Alkuun painike vie pelaajan alkuvalikkoon
Add(tauko);
}
/// <summary>
/// Aliohjelma suorittaa tarvittavat toiminnot alkuvalikkoon pääsemisesksi
/// </summary>
public void Alkuun()
{
ClearAll();
Alkuvalikko();
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Jypeli.NET" Version="11.*"/>
<PackageReference Include="Jypeli.FarseerPhysics.NET" Version="2.*"/>
</ItemGroup>
<ItemGroup>
<None Update="Content\EkaTaso.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Content\TokaTaso.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Content\KolmasTaso.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="..\..\..\..\UusiAuto.png">
<Link>Content\UusiAuto.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
#endregion
namespace Harjotustyo
{
/// <summary>
/// The main class.
/// </summary>
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
using var game = new Harjotustyo();
game.Run();
}
}
}
\ No newline at end of file
suunnitelma/esimerkkikuva.png

9.92 KiB