From 4862e568bbe4fe90ef962c1bcad8ce3d09cdb0b0 Mon Sep 17 00:00:00 2001 From: Eskelinen Roy <roy.eskelinen@gmail.com> Date: Thu, 6 Jan 2022 15:27:08 +0200 Subject: [PATCH] ht3 --- .../.vs/Eskape/DesignTimeBuild/.dtbcache.v2 | Bin 64714 -> 64714 bytes Eskape/.vs/Eskape/v16/.suo | Bin 32256 -> 37376 bytes Eskape/Eskape/Content/kentta1.txt | 2 +- Eskape/Eskape/Content/tahti.png | Bin 1458 -> 0 bytes Eskape/Eskape/Eskape.cs | 319 ++++++++++------ .../bin/Debug/net5.0/Content/kentta1.txt | 2 +- .../Eskape/bin/Debug/net5.0/Content/tahti.png | Bin 1458 -> 0 bytes Eskape/Eskape/bin/Debug/net5.0/Eskape.dll | Bin 12800 -> 13312 bytes Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb | Bin 12436 -> 12436 bytes Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll | Bin 5632 -> 5632 bytes .../net5.0/Eskape.csproj.FileListAbsolute.txt | 1 - Eskape/Eskape/obj/Debug/net5.0/Eskape.dll | Bin 12800 -> 13312 bytes Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb | Bin 12436 -> 12436 bytes Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll | Bin 5632 -> 5632 bytes README.md | 11 + Suunnitelma/README.md | 1 + gitignore | 350 ++++++++++++++++++ 17 files changed, 572 insertions(+), 114 deletions(-) delete mode 100644 Eskape/Eskape/Content/tahti.png delete mode 100644 Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png create mode 100644 README.md create mode 100644 Suunnitelma/README.md create mode 100644 gitignore diff --git a/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2 b/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2 index 7213d370349d2e4b43d4a30e32c551ebf4c62646..14cc012290f3fbe97abb4d14f8c565bce319de85 100644 GIT binary patch delta 77 zcmWN>u@S%^2mrvsg+viCRYu4Pf-sM(xP}{fmm>M%_X+!i`P_*Mb!bNPm(6|T3Q!3g b9W<iU(t2?qlc+f%52m5gBch=xuX(*6&~+HF delta 77 zcmV~$NfE#x3;@6fhH{Vu`l^Il2oUsOr8aQHOds9dC+(Bgb1Q|j4w(bGTaMZ+da1%7 bNC51F!wPb3TnHGWhigdWJi(0YUDx*m)h8Ga diff --git a/Eskape/.vs/Eskape/v16/.suo b/Eskape/.vs/Eskape/v16/.suo index ebd0a14ebaa806605da1bfd55697a486cf165cbd..e6cec395b5bf69d482b52df93cbdbec811745e0a 100644 GIT binary patch delta 2169 zcmdT_S!^3s6rDF7M`>_2r*2|us6!HxIG!*bJC4m#vbb(=)5ZlF@sZ6d&VpPu&SF|A z4l2qARn^R;LPC@eQz`^Mtw#uu5H-t3C=?Y11VW;eMdSlYT9kei(wO^<-C7|8g!03a zuI~2k^F8Oj=ZP(o*h%)7a0ioJB@D9(Z5CxEl}gbtfls-zGXp;pVuVU|TVbs9yIMx^ zB{5(w2~qYSd0xK8RuR4i16ZFfRHDZE^r8plE*<77>7la&s!n}oV;kzcjGf(FhyLBG zVzuaNQA$zrGr0!TJPMrVEQR-?aUaV4D6RBYG+WVXN7;cwk9MNo30LzMB(^hyspOjb zubA?xh$f4P)^S)zv8>GQEmLk7h=NR4{|yAUAQgnj%9*{-k()-M$ib=T6lwFcahSDL z%Mmq4h)#}bx>)WwCg9_8i==k^-A0I(%}A~owCpN@3$8x-7nho>_7l2EmRy#jccv6n z-E~e0@0UIRvAQ|%Oq9V3Hmw|~Kf+3)Lq#tO9Z|L&h=^{LfPu!`;1UMuwCI3u?KB@| zyNLYTJ$bBT`9P({9K8hDymA{li}Lk7E>cLWXjA0bq#S8HLK1BqB-;>RLvbsc*nWbv zn?<A9cF5@&84dWbre@!0;DGx;I5;>GsObrZhD<$fJ;sYs=(XN4I_%jW==oDM`bNLU zC|r6_pD;LBl^Hi|LCOBGGK`KMqDEIC(}bp&lY=GWVe&ad`L29TPI&86)Ip)k9|(HJ zMk4)@C-&PdR=ZsM*j2^G@tE)?6~ZFE(ccveQ*HM**_te(iMN{le%{h7dU>ztG4p~s zXtj$bpV{Bkq+p(bRHz-2&I);#^K~NaS!WU-5!GhIP>+)3LtbiBk@%ymWOQr<SE^jD zq>hW~($&*3z+%U~EpvpDNtZ4;kM?e~9LF<A9)T+l6&J6?G?Y$iVL7aWz+^j|>n+Kn z^LIeH?n2K+e6sZ1*N(oi0&n&11cBvb&ii%_rDm@$XcvQi-tTX=@fI;?<LzFLz}u}B zdr<TVev?U9O=-N3TL;O*H<1{UA++f;$wd;LS-(*k8)f4`f)ABE&T_;Am9APit=+^L zgscgH;oBiL93x#oB2zFGsb8DGlSo8se2l~g{_Tm<xTo*>{AI_>Pk*@3z0~q!w{W(z zp}*?g;cq{a)IW5qo&E7E2q=AB=#{xq#4ul>Z$RR|Mturj{cVW)U^&AW@#8eDXP7rJ z-dD*mFQV_PhO^`2de?Gi_4XU@JiFWV)2lxHu_?_bGv_bOpRy+7?{&|GzOljd_+}WK zD2JB8`j=jrAh#%sBcvg@F3ORd;mXZVo+kxjv(aQt|4qn6hkhkF<g7W9G&zYe5BVPe zhPvn%;2COzwu%)EbAnzm{N~c{BOL-=;2vs#m^KE}z5G8h1FHUf5Lzo_eTAN^f7~Bz C+3`vM delta 1960 zcmcIkZ%k8H6z_d)S%t^{{|LIG&Pv+yUfV}oS5cub1Ojz~Em0O}%PXS%@6*vK<3TVk z;xgz7$r7_<=}7ivS)|V;`?5%ueK0tZIhJk7zARa`PiS;uL>-|!7pT_AW=yvG^2<Gc z?!E7vdw%!GGmN}SCb<$uwK+0Ws$>+Yz7~tcs8tQOG}*K5ON5kxUjHKN8VH|R`H^f# zmkc519GO=BWOk8}LNufy=sr5MDDOsWXt7uh%J~U8wHKhCgwP?f5qXGQL=hq#QH&@- z>_qHGlp^Bi?Lygv*!<tr8zpc}!)5M3)5{1K;s7FrhCkJQKg=}J1el$v{hus8ok3DU z2J{c~R1I#Yay*NF%U~O>{hu;m;~6BMoNf7lgg2&Wnp?xt$mm_sDB)=SZbiz{5V9RY z*%!lE?tgMCq3mWxLo<YLa&6%4uY#&eYZ<TW)MM>$H!m8l92xxSqr*4g+e;kC6Y?_` zM2m+QvZRD|#ME>uo!4qf1x5wl;cRHjF9gZ(z0UkZnENg>VV9ewwWc+U$FJ=}r3^x@ z`cxvIXi4zFvTK}7L+C)WE-S&T9is|7;2T&2O0*8~(-g^anMBM?*yv`djZ5%>Wc09< zZj{II4X}(xBN`}|9~mXnIMYPnVfj33Mf=_apOzByj`DzefkY~p;tnz3J<~0nkb3$Z zoM4v3pcE7(sjIg$7=)vRhACqzyjfVT$d$4>Qp-dgAChvOGYa<ewchTa=)=SIv<AgN z&tPAmt6SXD)_3w0-{vVpJADnb(vbO15&Z5fLMG=ZIdz|sLwE3@{iVjY*5L@)MNYJt z9K4M)+5Ar4<m9b>lg}qO{C+1V_;{aMH9_3_IsDF5*=uU8Hr^7o)sd&G6RBrlvZWfT zTdrhg)C5m^`^C16$?Olp-Imt8T!P`OkF2@ZHf8rT+&yv}`WkfbOT9HC<+Ru<NnYM8 z4N0V^CKxV|!xLuZvw~L%tv)T|b63BC-G|%sh<Jh6bq1_QqEdw$zh-Gy*{Vv7HwkM) zAFX11Gb~#?>*R>HCi;xv&_N9hS>FwtZ|Gi1Sgb6YSrYO52ZYLR+Ptv@%G4YdDwOof zdukxZ-pa#@J{p-Q(YEY{&FghS>GAi-8j>Iv4z?yK^Ia88q=Sjp&Z!^s!68@z{s8Ya zSw&7T*}M+k<mGt5<h2Hz0lQ$Y5G>ple28=te8r@P(GU*w1$*J@#J0y01O|$T2=ajZ zY=#shFr)!x+U1{Q2;A$u`23lYCLn_&Fgj@1nuIfWOI6VeUZS7<a(TXeu4ZIuJSlWL z8f88ot?P1q*ZM<c?b(IjUb$MYqOG+o9Rs_Cv6)j<sujHV+t|pzKz$w?{`<@ZS14cb z^<6)IR)3A_@6p}g@zsgdMbAU)>ddL&_`>zJm9oy3=ILV}|NQIvq0lv)uZ#{G$kypa nFvMz@>}?0%$jy{B{27kEUP)B!@&ZW~oJL`zCn#xSe~`Zcg0q5N diff --git a/Eskape/Eskape/Content/kentta1.txt b/Eskape/Eskape/Content/kentta1.txt index a0fc254..c716981 100644 --- a/Eskape/Eskape/Content/kentta1.txt +++ b/Eskape/Eskape/Content/kentta1.txt @@ -15,7 +15,7 @@ XXXX ## H ## # ## - H E F F F # + XX H E F F F # ############################ ## N *^ F**# ## ## #### ## diff --git a/Eskape/Eskape/Content/tahti.png b/Eskape/Eskape/Content/tahti.png deleted file mode 100644 index 12f4398771471bc9a704358049b6d6dd07f9b974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmV;j1x@;iP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004b3#c}2nYxW zd<bNS00009a7bBm0006i0006i0k<MKn*aa+8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11uscNK~z|U#h6`4mS-5pf7hett1)evI$CP=DoOUC7PXezCM*jg zw_1@KTZ64&2aR>KgMoK<2V=0KMr9vsEBb;MMvb5kcd&zsi5_f56i6RLgKEqbfj0HN zcJRF7oBDp}`?USx;rY0)`?`Nz*Zn;Abw8r21R-lB6ZjeU))+k%h*KavC`Z6*V7Ul+ zKwyAgP>z620IHN*E6aj%8VI1ZGFgPia2Pxf1-1m?7lMo6T2(?zmqK|tBElwX<)t7T z2L;#^3gN<GsICT8vVf)_9H$Iut-LJ4s=0IVJP&5ihMXLnNHA#*B7*Bw$(T3KzY&4z zYCKgITPq7vbshv@)8xsxnKOqUR91or3Vf2P^OOLsl|taniV8fD;pe%z5Dp_Ed}ytN z{x?8i1K<s%H(HUGB^Owi$^a<=itt`e4z8$ZblaRckd=ia#c$$-0j-r1RbHDve{3I~ z2US&gzzS=nbfV*=vKBW1GFEzrR8<96t{}h{*2*EEFY4$Wx;93i#quGlinWph<N?!0 zoS(ZEAzy@iRi>(vIdv*-+qU>wIC2ENa|elM1E>i7K%a;Ytx7NOo9x)ZFF;+ao}Pz> zLb&W~Bs&`~I~%gHAUoUtoJ^Y*f8_ptxO2xp4-5<+(f1>-Z`=UqK!mgD_%&P|KwTXa z75Re?L1bnkKw5$b#8gHGl$9lCJ1_vPtv(!ZSe30qDc&H$kx7%tT)!SKS%*QYw--*H zMDN{0fE~uDg~%KPuvQj`a26=8uSaTX{yVsy9yoRk*VBVjWs5O-c&JUHOMYu5PlQvd z)K^qMW22v<7peRA;rMY}Umv}yylsrOMYqeyJ&CoF27Ci-FDyhiZ9=9@c`<M|Z^Dm1 z;+*4wb2J#ET_bHq0Y-s-Ai{T{5a}B?;zbt&L8!eQ&Ywp`xE_JKKbBogzzF1G5zdP6 zN<#y(WJxe^7cauqs~|#~D(j8WC$Vhf0!APUL}*oId1WQ6Sp#Vk{OAl0`k#^O*8%te z*lLUp#Osp~FantY>;gVrw8)2?h;H42qelVQWsH8FOrNBR1!J@y_)LVpXE9gJ#EM#V zVy1MY##7BysS+wK9uLy<%E^KJe4GfYlkGDez*>Nkl5ulAr_xe9RTfz*3084m;{mM6 z%)}KGOpq+1Qok}3;H_lrlLi!_uB0UOO;$+>q^IM6Rms>VHK4Upu1a3K`8PNSmo7m| z3$AO_dN8cCG?+CDPlQ$0N}@V3>4?-o?D_ZT5ga^-yK)5{J>t*SRyc72p2T=p!(mXR z09Y6lU~PIjZu<1m4ejl)e?RWwLwbSDs=Nw(+1*Y5o;|pZj?sNehj%Cm)11_vM1&PH zX86B0hV=9)oH>JbcOxSFs>=Ju=<P`JSJp~ve?Q-!JIAuFE_Cf$Brnfz%*%t^T-@Ww ztOmZ0H+I4ZS}W64DTz++&6}`yFN59PIG|aT+9)^xjL{pa)BxM=-J`dq1$X%}3@uz` zWq2aIp6D-FG7+o=C@%K*3l}axXD5ho7icm@+hcV!Mjf!*TKUO24z#tg^4c|AV<TQT z3>_V$1NFd}SU!@OgSDQAdLHcChwJPF;E*Z{<H3ypz1!TZ4Zuea9`NMA0rd88yyMQp zgvG+no$|ZqF<%u`<!@C!Hbze;12&c-|8sT&?}DF+=4PEaAwX*-7x)W5(rv(IWAu-S z!j16#jtDKP6at0D=)<w>5~cVb;3}{kSQ!)?fH8Vnm2%*XSa1OU0=7u%)X?vz2mk;8 M07*qoM6N<$f{;^-b^rhX diff --git a/Eskape/Eskape/Eskape.cs b/Eskape/Eskape/Eskape.cs index b5f9ada..cea0153 100644 --- a/Eskape/Eskape/Eskape.cs +++ b/Eskape/Eskape/Eskape.cs @@ -6,35 +6,24 @@ using System; using System.Collections.Generic; /// @author Roy Eskelinen -/// @version 21.12.2021 +/// @version 6.1.2022 /// <summary> /// Eskape tasohyppelypeli. +/// Silmukkatehtävä: https://tim.jyu.fi/view/kurssit/tie/ohj1/2021s/demot/demo5#teht%C3%A4v%C3%A4-4.-rajan-ylitt%C3%A4v%C3%A4t +/// Taulukkotehtävä: https://tim.jyu.fi/view/kurssit/tie/ohj1/2021s/demot/demo10#v2 /// </summary> - -/* class Vihu : PhysicsObject -{ - private IntMeter elamalaskuri = new IntMeter(3, 0, 3); - public IntMeter Elamalaskuri { get { return elamalaskuri; } } - - public Vihu(double leveys, double korkeus) - : base(leveys, korkeus) - { - elamalaskuri.LowerLimit += delegate { this.Destroy(); }; - } -} */ - public class Eskape : PhysicsGame { - private const double NOPEUS = 150; - private const double HYPPYNOPEUS = 900; - private const int RUUDUN_KOKO = 40; + private const double NOPEUS = 150; // hahmon nopeus + private const double HYPPYNOPEUS = 900; // kuinka korkealle hahmo hyppää + private const int RUUDUN_KOKO = 40; // ruudun zoomaus private PlatformCharacter pelaaja; - int healthPoints = 5; - IntMeter pistelaskuri = new IntMeter(0); + private int healthPoints = 5; // hahmon elämät + private IntMeter pistelaskuri = new IntMeter(0); // kuvat private Image pelaajanKuva = LoadImage("PlayerHero1.png"); @@ -59,27 +48,19 @@ public class Eskape : PhysicsGame private SoundEffect coinAani = LoadSoundEffect("pickCoin.wav"); private SoundEffect hpAani = LoadSoundEffect("powerUp.wav"); - + /// <summary> + /// Begin kutsuu aliohjelman AloitaPelin. + /// </summary> public override void Begin() { - Gravity = new Vector(300, -2000); - - LuoKentta(); - LisaaNappaimet(); - LuoPistelaskuri(); - - Camera.Follow(pelaaja); - Camera.ZoomFactor = 2; - Camera.StayInLevel = true; - - MasterVolume = 0.5; + AloitaPeli(); } + /// <summary> - /// Tähän alapuolelle tulee kaikki luo ja lisää -tapahtumat. + /// Kentän sisältö. Perässä olevat nimet viittaavat kutsuttaviin aliohjelmiin. /// </summary> - private void LuoKentta() { TileMap kentta = TileMap.FromLevelAsset("kentta1.txt"); @@ -90,7 +71,7 @@ public class Eskape : PhysicsGame kentta.SetTileMethod('^', LisaaPiste2); kentta.SetTileMethod('N', LisaaPelaaja); kentta.SetTileMethod('E', LisaaVihollinen); - kentta.SetTileMethod('F', LisaaVihollinen2); + kentta.SetTileMethod('F', LisaaVihollinen); kentta.SetTileMethod('B', LisaaLaatikko); kentta.SetTileMethod('S', LisaaPommi); kentta.SetTileMethod('H', LisaaHealthPotion); @@ -100,6 +81,13 @@ public class Eskape : PhysicsGame Level.Background.TileToLevel(); } + + /// <summary> + /// Health Potion. Sen keräämällä hahmo saa yhden elämäpisteen lisää. + /// </summary> + /// <param name="paikka">Potionin paikka. Määritellään kentässä.</param> + /// <param name="leveys">Koko leveyssuunnassa.</param> + /// <param name="korkeus">Koko pituussuunnassa.</param> void LisaaHealthPotion(Vector paikka, double leveys, double korkeus) { PhysicsObject healthPotion = PhysicsObject.CreateStaticObject(leveys, korkeus); @@ -110,15 +98,29 @@ public class Eskape : PhysicsGame Add(healthPotion); } + + /// <summary> + /// Pelin perustaso, jonka päällä kävellään. + /// </summary> + /// <param name="paikka">Tason paikka. Määritellään kentta1.txt:ssä</param> + /// <param name="leveys">Tason leveys.</param> + /// <param name="korkeus">Tason korkeus</param> private void LisaaTaso(Vector paikka, double leveys, double korkeus) { - PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); + PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys + 1, korkeus + 1); taso.Position = paikka; taso.Image = floorPic; taso.Tag = "floor"; Add(taso); } + + /// <summary> + /// Näkymätön taso pelissä. Käyttäytyy samalla tavalla kuin "LisaaTaso"-aliohjelma, mutta on näkymätön. + /// </summary> + /// <param name="paikka">Sijainti kentässä.</param> + /// <param name="leveys">Leveys</param> + /// <param name="korkeus">Korkeus</param> private void LisaaNakymatonTaso(Vector paikka, double leveys, double korkeus) { PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); @@ -128,6 +130,13 @@ public class Eskape : PhysicsGame Add(taso); } + + /// <summary> + /// Pelihahmon tappava taso. Tason päälle tippuessaan peli alkaa välittömästi alusta. + /// </summary> + /// <param name="paikka">Tappavan tason paikka kentässä.</param> + /// <param name="leveys">Tappavan tason leveys.</param> + /// <param name="korkeus">Tappavan tason korkeus.</param> private void LisaaTappavaTaso(Vector paikka, double leveys, double korkeus) { PhysicsObject spikes = PhysicsObject.CreateStaticObject(leveys, korkeus); @@ -137,6 +146,13 @@ public class Eskape : PhysicsGame Add(spikes); } + + /// <summary> + /// Pelissä kerättävä kolikko. Antaa yhden pisteen. + /// </summary> + /// <param name="paikka">Kolikon paikka kentässä.</param> + /// <param name="leveys">Kolikon leveys.</param> + /// <param name="korkeus">Kolikon korkeus.</param> private void LisaaPiste(Vector paikka, double leveys, double korkeus) { PhysicsObject piste = PhysicsObject.CreateStaticObject(leveys, korkeus); @@ -147,6 +163,13 @@ public class Eskape : PhysicsGame Add(piste); } + + /// <summary> + /// Pelissä kerättävä kolikko. Antaa viisi pistettä. + /// </summary> + /// <param name="paikka">Kolikon paikka kentässä.</param> + /// <param name="leveys">Kolikon leveys.</param> + /// <param name="korkeus">Kolikon korkeus.</param> private void LisaaPiste2(Vector paikka, double leveys, double korkeus) { PhysicsObject piste2 = PhysicsObject.CreateStaticObject(leveys, korkeus); @@ -157,34 +180,43 @@ public class Eskape : PhysicsGame Add(piste2); } + + /// <summary> + /// Pelihahmo, jota ohjataan. + /// </summary> + /// <param name="paikka">Aloituspaikka pelissä.</param> + /// <param name="leveys">Hahmon leveys.</param> + /// <param name="korkeus">Hahmon korkeus.</param> public void LisaaPelaaja(Vector paikka, double leveys, double korkeus) { pelaaja = new PlatformCharacter(35, 39); pelaaja.Position = paikka; - // pelaaja.Mass = 1.8; pelaaja.Image = pelaajanKuva; pelaaja.Weapon = new AssaultRifle(0, 0); pelaaja.Weapon.Ammo.Value = 999; pelaaja.Weapon.ProjectileCollision = AmmusOsui; pelaaja.Tag = "pelaaja"; + + // Alla aliohjelmat pelaajan eri reaktioihin kentän kanssa. AddCollisionHandler(pelaaja, "piste", TormaaKolikkoon); AddCollisionHandler(pelaaja, "piste2", TormaaKolikkoon2); AddCollisionHandler(pelaaja, "tappavat", TormaaPommiin); AddCollisionHandler(pelaaja, "health", TormaaHealthPotion); AddCollisionHandler(pelaaja, "spikes", TormaaTappavaanTasoon); - // AddCollisionHandler(pelaaja, "tappavat", CollisionHandler.ExplodeObject(100, true)); Add(pelaaja); } + + /// <summary> + /// Pelissä summittaisesti lentelevä pommi, joka osuessaan pelaajaan satuttaa pelaajaa 1 pisteen verran. + /// </summary> + /// <param name="paikka">Aloituspaikka pommille. Muuttuu välittömästi pelin alkaessa.</param> + /// <param name="leveys">Pommin leveys.</param> + /// <param name="korkeus">Pommin korkeus.</param> private void LisaaPommi(Vector paikka, double leveys, double korkeus) { - /// Pommi toimii satunnaisesti. Tuhoamalla sen saa pisteitä. - /// Pommi satuttaa osuessaan. - /// - - PhysicsObject paakallo = new PhysicsObject(40, 40); - + PhysicsObject paakallo = new PhysicsObject(30, 30); RandomMoverBrain satunnaisaivot = new RandomMoverBrain(150); // tekoäly satunnaisaivot.ChangeMovementSeconds = 5; @@ -192,104 +224,75 @@ public class Eskape : PhysicsGame satunnaisaivot.WanderRadius = 400; paakallo.Position = paikka; - paakallo.Image = skull; paakallo.Tag = "tappavat"; Add(paakallo); } + + /// <summary> + /// Pelihahmoon lisättävä vihollinen, joka ampuu pelaajaa. Tuhotessaan pelaaja saa vihollisesta 10 pistettä. + /// </summary> + /// <param name="paikka">Vihollisen paikka.</param> + /// <param name="leveys">Vihollisen leveys.</param> + /// <param name="korkeus">Vihollisen korkeus.</param> private void LisaaVihollinen(Vector paikka, double leveys, double korkeus) { - // tähän tulee vihollinen - - PlatformCharacter enemy1 = new PlatformCharacter(40, 40); enemy1.Mass = 8.0; enemy1.Position = paikka; enemy1.Weapon = new AssaultRifle(0, 0); enemy1.Weapon.Ammo.Value = 9999; - enemy1.Image = enemyPic; + enemy1.Image = RandomGen.SelectOne(enemyPic, enemyPic2); enemy1.Tag = "vihu"; enemy1.CanRotate = false; Add(enemy1); - + // Vihollisen tekoäly. PlatformWandererBrain tasoAivot = new PlatformWandererBrain(); tasoAivot.Speed = 100; tasoAivot.JumpSpeed = 200; - tasoAivot.TriesToJump = true; - - FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja"); // tekoäly - - // vihollisen tekoäly - seuraajanAivot.Active = true; - seuraajanAivot.Speed = 0; - seuraajanAivot.DistanceFar = 200; - seuraajanAivot.DistanceClose = 0; - seuraajanAivot.TurnWhileMoving = true; - seuraajanAivot.StopWhenTargetClose = true; - seuraajanAivot.FarBrain = tasoAivot; - - enemy1.Brain = seuraajanAivot; - - seuraajanAivot.TargetClose += delegate { MessageDisplay.Add("Pam"); }; - } - - private void LisaaVihollinen2(Vector paikka, double leveys, double korkeus) - { - // Täysin identtinen aikaisemman vihollisen kanssa. On vain erivärinen. - - ShootingPlatformCharacter enemy2 = new ShootingPlatformCharacter(40, 40); - - enemy2.Mass = 8.0; - enemy2.Position = paikka; - enemy2.Image = enemyPic2; - enemy2.Tag = "vihu"; - enemy2.CanRotate = false; - Add(enemy2); - - RandomMoverBrain satunnaisaivot = new RandomMoverBrain(50); - satunnaisaivot.ChangeMovementSeconds = 5; - enemy2.Brain = satunnaisaivot; - - FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja"); // tekoäly - - // vihollisen tekoäly + tasoAivot.TriesToJump = false; + enemy1.Brain = tasoAivot; - seuraajanAivot.Active = true; - seuraajanAivot.Speed = 50; - seuraajanAivot.DistanceFar = 400; - seuraajanAivot.DistanceClose = 200; - seuraajanAivot.TurnWhileMoving = true; - seuraajanAivot.StopWhenTargetClose = true; - // seuraajanAivot.TargetClose += MitaTapahtuuKunOllaanLahella; - seuraajanAivot.FarBrain = satunnaisaivot; - - enemy2.Brain = seuraajanAivot; + // Alla oleva koodi määrittää vihollisen ampumisen. + Timer.CreateAndStart(RandomGen.NextDouble(0.75, 1.75), delegate + { + Vector d = pelaaja.Position - enemy1.Position; + d.Y = 0; + if (d.Magnitude > 200) + return; + enemy1.Weapon.Angle = d.Angle; + AmmuAseella(enemy1, "vihuluoti"); + }); } - /* private void MitaTapahtuuKunOllaanLahella; - { - AmmuAseella.Play; - } */ + /// <summary> + /// Pistelaskuri. Pistelaskuri reagoi pelihahmon interaktioon kentän kanssa. + /// </summary> private void LuoPistelaskuri() { pistelaskuri = new IntMeter(0); Label pistenaytto = new Label(); - pistenaytto.X = Screen.Left + 100; pistenaytto.Y = Screen.Top - 100; - pistenaytto.TextColor = Color.Yellow; // korjaa värejä + pistenaytto.TextColor = Color.Yellow; pistenaytto.Color = Color.Black; - pistenaytto.BindTo(pistelaskuri); Add(pistenaytto); } + + /// <summary> + /// Peliin lisättävä objekti, joka ei tuhoudu, mutta jota pelihahmolla voidaan liikutella. + /// </summary> + /// <param name="paikka">Laatikon sijainti.</param> + /// <param name="leveys">Laatikon leveys.</param> + /// <param name="korkeus">Laatikon paikka.</param> private void LisaaLaatikko(Vector paikka, double leveys, double korkeus) { PhysicsObject box = new PhysicsObject(leveys, korkeus); @@ -299,20 +302,28 @@ public class Eskape : PhysicsGame Add(box); } + + /// <summary> + /// Pelissä olevat näppäimet. + /// </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 vasemmalle", pelaaja, NOPEUS); Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, HYPPYNOPEUS); - Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", pelaaja); - + Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", pelaaja, "pelaajaluoti"); PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); } - private void AmmuAseella(PlatformCharacter pelaaja) + + /// <summary> + /// Aseella ampumisen aliohjelma. + /// </summary> + /// <param name="pelaaja">Pelihahmo.</param> + /// <param name="tunnus">Ase.</param> + private void AmmuAseella(PlatformCharacter pelaaja, string tunnus) { PhysicsObject ammus = pelaaja.Weapon.Shoot(); @@ -323,29 +334,67 @@ public class Eskape : PhysicsGame if (ammus != null) { + ammus.Tag = tunnus; ammus.Size *= 3; ammus.Image = bullet; ammus.MaximumLifetime = TimeSpan.FromSeconds(7.0); } } - void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) + + /// <summary> + /// Aliohjelma määrittää, mitä tapahtuu kun aseella osutaan. + /// </summary> + /// <param name="ammus">Luoti</param> + /// <param name="kohde">Kohde, johon luoti osuu.</param> + private void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) { + if (kohde.Tag.ToString() == "vihu") + { + kohde.Destroy(); + pistelaskuri.AddValue(10); + } + + if (kohde.Tag.ToString() == "pelaaja") + { + // MessageDisplay.Add("Osui"); Tällä testattiin, osuiko peli. + healthPoints--; + } osumaAani.Play(); ammus.Destroy(); } + + /// <summary> + /// Pelihahmon liikuttaminen. + /// </summary> + /// <param name="hahmo">Pelihahmo.</param> + /// <param name="nopeus">Pelihahmon nopeus.</param> private void Liikuta(PlatformCharacter hahmo, double nopeus) { + if (hahmo == null || hahmo.IsDestroyed) + return; hahmo.Walk(nopeus); } + + /// <summary> + /// Pelihahmon hyppääminen. + /// </summary> + /// <param name="hahmo">Pelihahmo</param> + /// <param name="nopeus">Hyppynopeus.</param> private void Hyppaa(PlatformCharacter hahmo, double nopeus) { hyppyAani.Play(); hahmo.Jump(nopeus); } + + /// <summary> + /// Reaktio silloin, kun pelihahmo törmää health potioniin. Pelihahmo saa tällöin +1 elämäpistettä lisää. + /// </summary> + /// <param name="hahmo">Pelihahmo</param> + /// <param name="healthPotion">Health potion</param> private void TormaaHealthPotion(PhysicsObject hahmo, PhysicsObject healthPotion) { healthPoints++; @@ -354,6 +403,12 @@ public class Eskape : PhysicsGame healthPotion.Destroy(); } + + /// <summary> + /// Reaktio, kun pelihahmo osuu 1 pisteen kolikkoon. + /// </summary> + /// <param name="hahmo">Pelihahmo.</param> + /// <param name="kolikko">Kolikko</param> private void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject kolikko) { pistelaskuri.AddValue(1); @@ -362,31 +417,73 @@ public class Eskape : PhysicsGame // pistelaskuri.Value += 1; } + + /// <summary> + /// Reaktio, kun pelihahmo osuu 5 pisteen kolikkoon. + /// </summary> + /// <param name="hahmo">Pelihahmo.</param> + /// <param name="kolikko">Kolikko</param> private void TormaaKolikkoon2(PhysicsObject hahmo, PhysicsObject kolikko) { coinAani.Play(); kolikko.Destroy(); - pistelaskuri.AddValue (5); + pistelaskuri.AddValue(5); } + + /// <summary> + /// Reaktio, kun pelihahmo osuu pommiin. + /// </summary> + /// <param name="hahmo">Pelihahmo</param> + /// <param name="skull">Pommi</param> private void TormaaPommiin(PhysicsObject hahmo, PhysicsObject skull) { healthPoints--; if (healthPoints <= 0) + { pelaaja.Destroy(); - + Timer.SingleShot(3, AloitaPeli); + } rajahdysAani.Play(); MessageDisplay.Add("HP -1"); skull.Destroy(); } + + /// <summary> + /// Reaktio, kun pelihahmo osuu tappavaan tasoon. + /// </summary> + /// <param name="hahmo">Pelihahmo.</param> + /// <param name="spikes">Tappava taso.</param> private void TormaaTappavaanTasoon(PhysicsObject hahmo, PhysicsObject spikes) { healthPoints = 0; pelaaja.Destroy(); + Timer.SingleShot(3, AloitaPeli); MessageDisplay.Add("Kuolit"); // lisää tuskanhuuto } + + + /// <summary> + /// Aliohjelma, joka aloittaa pelin alusta silloin, kun pelihahmo kuolee. + /// </summary> + private void AloitaPeli() + { + ClearAll(); + + Gravity = new Vector(300, -2000); + + LuoKentta(); + LisaaNappaimet(); + LuoPistelaskuri(); + + Camera.Follow(pelaaja); + Camera.ZoomFactor = 2; + Camera.StayInLevel = true; + + MasterVolume = 0.1; + } } diff --git a/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt b/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt index a0fc254..c716981 100644 --- a/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt +++ b/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt @@ -15,7 +15,7 @@ XXXX ## H ## # ## - H E F F F # + XX H E F F F # ############################ ## N *^ F**# ## ## #### ## diff --git a/Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png b/Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png deleted file mode 100644 index 12f4398771471bc9a704358049b6d6dd07f9b974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmV;j1x@;iP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004b3#c}2nYxW zd<bNS00009a7bBm0006i0006i0k<MKn*aa+8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11uscNK~z|U#h6`4mS-5pf7hett1)evI$CP=DoOUC7PXezCM*jg zw_1@KTZ64&2aR>KgMoK<2V=0KMr9vsEBb;MMvb5kcd&zsi5_f56i6RLgKEqbfj0HN zcJRF7oBDp}`?USx;rY0)`?`Nz*Zn;Abw8r21R-lB6ZjeU))+k%h*KavC`Z6*V7Ul+ zKwyAgP>z620IHN*E6aj%8VI1ZGFgPia2Pxf1-1m?7lMo6T2(?zmqK|tBElwX<)t7T z2L;#^3gN<GsICT8vVf)_9H$Iut-LJ4s=0IVJP&5ihMXLnNHA#*B7*Bw$(T3KzY&4z zYCKgITPq7vbshv@)8xsxnKOqUR91or3Vf2P^OOLsl|taniV8fD;pe%z5Dp_Ed}ytN z{x?8i1K<s%H(HUGB^Owi$^a<=itt`e4z8$ZblaRckd=ia#c$$-0j-r1RbHDve{3I~ z2US&gzzS=nbfV*=vKBW1GFEzrR8<96t{}h{*2*EEFY4$Wx;93i#quGlinWph<N?!0 zoS(ZEAzy@iRi>(vIdv*-+qU>wIC2ENa|elM1E>i7K%a;Ytx7NOo9x)ZFF;+ao}Pz> zLb&W~Bs&`~I~%gHAUoUtoJ^Y*f8_ptxO2xp4-5<+(f1>-Z`=UqK!mgD_%&P|KwTXa z75Re?L1bnkKw5$b#8gHGl$9lCJ1_vPtv(!ZSe30qDc&H$kx7%tT)!SKS%*QYw--*H zMDN{0fE~uDg~%KPuvQj`a26=8uSaTX{yVsy9yoRk*VBVjWs5O-c&JUHOMYu5PlQvd z)K^qMW22v<7peRA;rMY}Umv}yylsrOMYqeyJ&CoF27Ci-FDyhiZ9=9@c`<M|Z^Dm1 z;+*4wb2J#ET_bHq0Y-s-Ai{T{5a}B?;zbt&L8!eQ&Ywp`xE_JKKbBogzzF1G5zdP6 zN<#y(WJxe^7cauqs~|#~D(j8WC$Vhf0!APUL}*oId1WQ6Sp#Vk{OAl0`k#^O*8%te z*lLUp#Osp~FantY>;gVrw8)2?h;H42qelVQWsH8FOrNBR1!J@y_)LVpXE9gJ#EM#V zVy1MY##7BysS+wK9uLy<%E^KJe4GfYlkGDez*>Nkl5ulAr_xe9RTfz*3084m;{mM6 z%)}KGOpq+1Qok}3;H_lrlLi!_uB0UOO;$+>q^IM6Rms>VHK4Upu1a3K`8PNSmo7m| z3$AO_dN8cCG?+CDPlQ$0N}@V3>4?-o?D_ZT5ga^-yK)5{J>t*SRyc72p2T=p!(mXR z09Y6lU~PIjZu<1m4ejl)e?RWwLwbSDs=Nw(+1*Y5o;|pZj?sNehj%Cm)11_vM1&PH zX86B0hV=9)oH>JbcOxSFs>=Ju=<P`JSJp~ve?Q-!JIAuFE_Cf$Brnfz%*%t^T-@Ww ztOmZ0H+I4ZS}W64DTz++&6}`yFN59PIG|aT+9)^xjL{pa)BxM=-J`dq1$X%}3@uz` zWq2aIp6D-FG7+o=C@%K*3l}axXD5ho7icm@+hcV!Mjf!*TKUO24z#tg^4c|AV<TQT z3>_V$1NFd}SU!@OgSDQAdLHcChwJPF;E*Z{<H3ypz1!TZ4Zuea9`NMA0rd88yyMQp zgvG+no$|ZqF<%u`<!@C!Hbze;12&c-|8sT&?}DF+=4PEaAwX*-7x)W5(rv(IWAu-S z!j16#jtDKP6at0D=)<w>5~cVb;3}{kSQ!)?fH8Vnm2%*XSa1OU0=7u%)X?vz2mk;8 M07*qoM6N<$f{;^-b^rhX diff --git a/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll b/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll index 4ee65e153c6111d63b5a80fc0cc09311fd5a6185..2d11800715d08e3752ee7c26fc52f0173e6af2ed 100644 GIT binary patch literal 13312 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 E8<Vt9w*UYD literal 12800 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 A4FCWD diff --git a/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb b/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb index a9e851f2c3ddba7aed8c9ed8a8d0eeaa6694ad61..64f8dcc94304431aeb326684ee5e869146ca3573 100644 GIT binary patch delta 1807 zcmZ8iO-x)>6h7zj-pr#8Ff;rO1H;Ue8RqAW!<3>xOBz~8$DfF8NHwW6K!r4|6ih+Q z)YzF3H}xlKUt@LA*rc%=5;u)e(?+XlA|!2NU1{TjjXPr0m5DC=&g}pb3E%hbch7nE zo^$SbcP>s}oc<tIoFJmELo>(mpr3)c8t8LGqXtn4x@&yt%*pu^ix|>v%;BH9j*QbP z22(Q5A9->V&!mZWZRi7Y3$obmA5RrR&;9hom$7SKY}|FP9rS<tO_0d-d`MZfJBS!Q zdx?7Wg6$9;Kn|D(5CeGt_>l_`XPMK_5ATP4;w<n25>b=GoGShmXFA-?bPl)*tOCCS zZ3(7P-~w<T*pp;B1AGju0?jF=Q^32xRp2(T4*UxYrJ0Tam(q#?$WMakx0w{45)M%< zphP>Laf0*CU0x`T!sNl6r{eP(eCnX<D!L!K9=g7wgYa*t(jUR@g>I<Wi_pF*ExG%v zbPIIjwk}d1CYrV<XeV^@|8z^0J`H<omEI2>sM6=5+p6@_2snt+Zw45FeN!_b+)hk% z;013bgR{``7toy1e4vWQ^|)KJPxBxc=c32h4dW?2&TB4cKB_sYIjouKUYv_mZ%e-< z&^38ZAkJ{jFqt&gJq3QfyQKMw=3AQAH4}?<7<?x&1<oX=*hRg`62=S3E84maZb*?b zX(kl`pHJNa52lA}OzN{s;8{DSLm3&54ecA4oSa*Dae8hsM=zgTT$=5rmuBaemZoXO znJ|W(6(j1b8J|S<-aEW&B)IYR_czB@zFvDOl51J~$DaG`#@XfTzrK~-x99qs<~#9L zX?Gqlnd+3~CRT+PP#E6t<ZYX6XVLEE3Fn%fu};I~S!H!N59|=X;rwlf-Ejra(tA!Q z6X(m$NG8pnJM)=z>RY%bl@+3(bZ1DRt&)nmD59vHdK85ypwN2#F6X;UAYe!btHL0P z%cTc+b+@ttG-Nn`W&%YqVigb7E3(AR;2=*NmG2X8mHvSHpzP!~(28xcU1Dpe0Yxcl zlAW}{Bi4N`eEcoaLRi&HowBM}Etd<<>@S#M=JHK<jG32RD&2=Gh|5jbCaf$EMGU;Y z(?A+g$pr<#oKRFbhq6taa%QvfU5~?kOj!|nMp1;0De9@B<BGCK5k){Y2XPZ|Iq%%a z#)^%~vdAmTHcO<v3K_u#SAr^-98{$r#@ymPiPgK5h0n7FCbY0u4i4$y!x#5%gSKt$ z%JNaemdz)zVh?@Lrt+xLrA|v0ebp>7N@vx{s%~W|YE%VXaHTwQ6L5JM`}(8^jg_N_ z=;`+{-Jq;`IUx^qNV!`p8^{&R<;!qrla;Zrhy2=R6du}EU_<yaT|`j&oRGwjj_Iq- zm0P3>Hna8XbC5FWY;nGoT{qKGD)BI~J9r-fyJb&(OzqN(K4PPw?}73!aCk%<q6T$3 zK|8TSZiY~s>86~s(KGE#=9*bKujImyJt{vhWwVwktE?!YK3-{~#;tO7szN}TqE*6j K@p6Y+KJg#YgwM7B delta 1908 zcmZWqUu=_A6hHUw>$h*S+uH8`y8dB*`e)r3Yp1wuj^WU;u<7Cg5){%BigaU}Y@M!& z+1D=2keGn_p$k3`h%7!J4+euzM&g5_Aw;9R$ODKbnwXIIV2JwS@7%Rn)uzAG`#a~{ zbI!f@+}pE>vxzs`%>6{vI&tJMe&~DPcnSD2(U3-TifxnW`PA%73v9mu9lq4Mcam;m z5a;p8-qBt7?X(dci-13Qe2#;ye-gWN_m*Sadi$NG&z4?4bm!WEAKXOx^B!rG8AJj; z{X|;{`KS?qk)l8fV4WQ(19X6$StsAR?Q^nYGf)k1H7?60!e(tiP#U-hd;$ChID&%u zfuq33z#qVBNYGzEG%RR8a0>Va_yzbAaC8Xj0mgw8@E&jt*b<R68WAK>43|T+0>}cl zJ`$}WX5AKZ<^arg=qvJm58zh;?#T03!7IU?dA=RI3fz_FwV3ZH;-_JEf>#&p;I1NG z4qm;<O{#;UW>Z1E;I&1(1-$M*yuOG}z}`^A1K^ECd=Cn2D&l+)ZXCr%fhLi^NC98+ z0{r2^h(byZ7RhJTn9CwUYvA)JAZSsIIf9^RNJ%d$O_kEHwV)YR`jae8+NX#|NkO;T z1?`A%_XN>HBO-`OeI-L=qZ5HR<oQ5W$qPzeSMr{cB-lCx`5+jFTnxp9PRpSz#=nOy zKz4_(L!J+iw9(h$dys1#ZSfKtC2<odIh&lx^w7(xg>*8y!J;&soK2?_))8%}av`}m zpGZt4W_PAunM+&mYc19d?Op#;aPi0aW0zO&o<976*}Qbqd;in#hJV_<W31$FxA%U- zrK`)fH`?tnBoKWzG^RAHweFDq0`^IaS^h{wbXsGPsEAu;q%$xDml0_gR4=i&b=;QK z68%}uRLD%5#IyzL+lWtB!`G~bk#@0ac{)498EbcEhj|VWLelV16HoSNXugo7R`N@n zdbcDGHE=U;mpJD>7LT*&XEDg4Lg%X>GkrJ%k-dUwv2vq<26S|Nn6Cu_8PvifH;?Ms zAGz#Q$<)MDU1Zlp_Ku0`F0!8^LZ5*ME)7!}*(b<(5T=exsh}F3tPFOx4(fPBuyO}S zb&!X30~)S~N5=?$4s2pU1lZca0^4DbS2H1>R?RIlh8P#QD`Mq<-X`eeFiqpp6WL!; z(5U{ef)Mn7W%O%>1$#FuFc4i;r7CFUGBzs+Yp_muSz;3mkrBD9Sn>7ZNffzCWc5kI zPJRu`YteBSh~cJoUOe`~PFpk-;pAMHEyWYCV4l~y*wx+>#O!CJ;iqv)emba8HyxA( z@tmYE#Wb8OChjcdS-sZ7t~S#l4L8;D+M*Iq3aoexWyU6&WcEwG-6HoC0z0`Zhon+A zI+c14)YaUE&}=wP6dcixO6^yU`=G9pMkOD<otn9`(77s-8&3-|9D+xqG%7fQom|SO zW%yq~<c`9IBJ*n1ut?a&|2MgrLgYH$7rX^7cC67d`80)sr3`Ka!@77WrJTdgZBvCO zTgyx#Q*E=YltR{5-HDJ|U-sv10&k+mZ~9}8OlEN7XSR-|W>1uf^$*4RRdG3H4Q=!N E11$C4qW}N^ diff --git a/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll b/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll index d3aa7dbd2156ac4488382fc2acf684d0ae46dee4..3158315594f6e78cad28e5813756240d0c624b95 100644 GIT binary patch delta 941 zcmZ8gO-NKx6#nj;H?MKVrWyZIG|>br8V1EbN}1HLL|SN=4HEHsj$;mtKfIYBA)5)w zf`l4gi)a-jfzZO3ZHOckL_~{Rv@i%-wP`O!efRoPbl`mFeCM8X&;8AXa-oO!^vTiu za(<~se8{iF{5Q`5gP>dmy4?Bt(&8LYEI9{ioO&(fjEX_=sjwnqS|GAsdGT&zS?`0b z?84%U`SL<g{~<K2I>IP*7aM?JMTawF9M6U{py3wqnD&wMhck9^`dXS(Bjg5j+J=!~ zG|>-8zkg()kG7lqz2v>AnK4=^EElnIpok8(MGGnzpc|yhd1P2x7gesEnpFuhAQORi zV#gY&6@8k4`wDNMSv!Pr)*Fba$TO@61Ge~1{0)h(6n<71QSl}EUUXtZ_)(^9Fy{*7 zoJ-mkBR^H6EKsW&3obx#hnL9Olz&?Uuqif0519@ZnXK4h2GUwB7jqa#G1M(5c!O_j zAa>azj-l}{tMs$2zBjhZ<d$36pT}~CJ9A-PD}rAWJT94DMfBo?@|%ePoKo1Ma6sV& zg`)~Bg>ys$Vfd(Fl%j)J%}s^T0F!tU<HQy`A$H<9vSCE=lH@$rh{I~&GI0TM7U;RX zi{Uzz$n)XV?@KxQl`qf6yC1EVS4}Sd$=y%~uB%tT!LCT$H2W%&>DiPu7fo5|bW5Ar zgv4}WYOdLN>gleE&P>fFQwh7DG26-{#(Oe+n`75Ag)g2(5gbZcnTZ*DDmrP|Ry>oi zow#?x(-mno&CF!ddFwsW{{KIKUMGadRR`gw6AVh~_pF{Vv%yX8X_ryrp`LY0e6J5K g^Iz@Bn)B6HEmjM^d`VI8`?uZN$9DCl@=XW+0K09NDF6Tf delta 767 zcmZ9KOK1~O7=_P2nHiHwNE1V&wM82OrPUA{im$2|HClqwR?-lPiVvz16~zZGT$l(& z3MtabtXp(ZFwliKAmUPjg1dt5T)5Ju`{2TJZ#9aSx!*nKzwdu;JyXvtEtq`|9)58b z2V}@?Rid9x08?PO2pqE9R3cIbBJ^+AG2o?)j5jM&lJQ$oF=FN1%4Fv0dT}jRxVmuu zdfktkKg2-L6FXteS%7fHK5yC{u6-3C{RlX10D0DQ>Hgj7t!wwVG!{*OAJXL#mMCIM zPn3%Vw$JF>${)LV`!ZWqI9(=sfsisC8AFl*${yChKQ&CPD*I}>189mG2-x_>nKnwI zn8$bN!8WdIV~391z#YcN<rVn>iu0P!HEkWAp?0tx4T<8TG&p9zv8tEf*h9Fn@G=Lu zUu};zk0pj>S(d|eCZ_Z1DDSbxsq))Bfm*Wbwzk>F6fm-dG?3#V0~j$vX!9y@(ncTY zU_|R2skT%+s##Q=!5M94H7{vqnVcbHk-%=UACqJn6>=BOkz;6*2eCpPM~gg#*JMe@ z&!XwM!9+pbj(@sada+Y$l>?_6UDqjbc#Xef8yjij7%vpc`*Wdr@jA{GuNv;p{{OOI z4vGW=gAj`%9#=LRe0k(TE&kaV_uhuzZT`s@`llpMQsv!LQiA?!q$=L1@xqTrJC-rL KS3gpBbki?{xOnRT diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt b/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt index 1177e62..ed39cf1 100644 --- a/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt +++ b/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt @@ -1,7 +1,6 @@ C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.exe C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\kentta1.txt C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\maali.wav -C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\tahti.png C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.deps.json C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.runtimeconfig.json C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.runtimeconfig.dev.json diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll b/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll index 4ee65e153c6111d63b5a80fc0cc09311fd5a6185..2d11800715d08e3752ee7c26fc52f0173e6af2ed 100644 GIT binary patch literal 13312 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 E8<Vt9w*UYD literal 12800 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 A4FCWD diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb b/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb index a9e851f2c3ddba7aed8c9ed8a8d0eeaa6694ad61..64f8dcc94304431aeb326684ee5e869146ca3573 100644 GIT binary patch delta 1807 zcmZ8iO-x)>6h7zj-pr#8Ff;rO1H;Ue8RqAW!<3>xOBz~8$DfF8NHwW6K!r4|6ih+Q z)YzF3H}xlKUt@LA*rc%=5;u)e(?+XlA|!2NU1{TjjXPr0m5DC=&g}pb3E%hbch7nE zo^$SbcP>s}oc<tIoFJmELo>(mpr3)c8t8LGqXtn4x@&yt%*pu^ix|>v%;BH9j*QbP z22(Q5A9->V&!mZWZRi7Y3$obmA5RrR&;9hom$7SKY}|FP9rS<tO_0d-d`MZfJBS!Q zdx?7Wg6$9;Kn|D(5CeGt_>l_`XPMK_5ATP4;w<n25>b=GoGShmXFA-?bPl)*tOCCS zZ3(7P-~w<T*pp;B1AGju0?jF=Q^32xRp2(T4*UxYrJ0Tam(q#?$WMakx0w{45)M%< zphP>Laf0*CU0x`T!sNl6r{eP(eCnX<D!L!K9=g7wgYa*t(jUR@g>I<Wi_pF*ExG%v zbPIIjwk}d1CYrV<XeV^@|8z^0J`H<omEI2>sM6=5+p6@_2snt+Zw45FeN!_b+)hk% z;013bgR{``7toy1e4vWQ^|)KJPxBxc=c32h4dW?2&TB4cKB_sYIjouKUYv_mZ%e-< z&^38ZAkJ{jFqt&gJq3QfyQKMw=3AQAH4}?<7<?x&1<oX=*hRg`62=S3E84maZb*?b zX(kl`pHJNa52lA}OzN{s;8{DSLm3&54ecA4oSa*Dae8hsM=zgTT$=5rmuBaemZoXO znJ|W(6(j1b8J|S<-aEW&B)IYR_czB@zFvDOl51J~$DaG`#@XfTzrK~-x99qs<~#9L zX?Gqlnd+3~CRT+PP#E6t<ZYX6XVLEE3Fn%fu};I~S!H!N59|=X;rwlf-Ejra(tA!Q z6X(m$NG8pnJM)=z>RY%bl@+3(bZ1DRt&)nmD59vHdK85ypwN2#F6X;UAYe!btHL0P z%cTc+b+@ttG-Nn`W&%YqVigb7E3(AR;2=*NmG2X8mHvSHpzP!~(28xcU1Dpe0Yxcl zlAW}{Bi4N`eEcoaLRi&HowBM}Etd<<>@S#M=JHK<jG32RD&2=Gh|5jbCaf$EMGU;Y z(?A+g$pr<#oKRFbhq6taa%QvfU5~?kOj!|nMp1;0De9@B<BGCK5k){Y2XPZ|Iq%%a z#)^%~vdAmTHcO<v3K_u#SAr^-98{$r#@ymPiPgK5h0n7FCbY0u4i4$y!x#5%gSKt$ z%JNaemdz)zVh?@Lrt+xLrA|v0ebp>7N@vx{s%~W|YE%VXaHTwQ6L5JM`}(8^jg_N_ z=;`+{-Jq;`IUx^qNV!`p8^{&R<;!qrla;Zrhy2=R6du}EU_<yaT|`j&oRGwjj_Iq- zm0P3>Hna8XbC5FWY;nGoT{qKGD)BI~J9r-fyJb&(OzqN(K4PPw?}73!aCk%<q6T$3 zK|8TSZiY~s>86~s(KGE#=9*bKujImyJt{vhWwVwktE?!YK3-{~#;tO7szN}TqE*6j K@p6Y+KJg#YgwM7B delta 1908 zcmZWqUu=_A6hHUw>$h*S+uH8`y8dB*`e)r3Yp1wuj^WU;u<7Cg5){%BigaU}Y@M!& z+1D=2keGn_p$k3`h%7!J4+euzM&g5_Aw;9R$ODKbnwXIIV2JwS@7%Rn)uzAG`#a~{ zbI!f@+}pE>vxzs`%>6{vI&tJMe&~DPcnSD2(U3-TifxnW`PA%73v9mu9lq4Mcam;m z5a;p8-qBt7?X(dci-13Qe2#;ye-gWN_m*Sadi$NG&z4?4bm!WEAKXOx^B!rG8AJj; z{X|;{`KS?qk)l8fV4WQ(19X6$StsAR?Q^nYGf)k1H7?60!e(tiP#U-hd;$ChID&%u zfuq33z#qVBNYGzEG%RR8a0>Va_yzbAaC8Xj0mgw8@E&jt*b<R68WAK>43|T+0>}cl zJ`$}WX5AKZ<^arg=qvJm58zh;?#T03!7IU?dA=RI3fz_FwV3ZH;-_JEf>#&p;I1NG z4qm;<O{#;UW>Z1E;I&1(1-$M*yuOG}z}`^A1K^ECd=Cn2D&l+)ZXCr%fhLi^NC98+ z0{r2^h(byZ7RhJTn9CwUYvA)JAZSsIIf9^RNJ%d$O_kEHwV)YR`jae8+NX#|NkO;T z1?`A%_XN>HBO-`OeI-L=qZ5HR<oQ5W$qPzeSMr{cB-lCx`5+jFTnxp9PRpSz#=nOy zKz4_(L!J+iw9(h$dys1#ZSfKtC2<odIh&lx^w7(xg>*8y!J;&soK2?_))8%}av`}m zpGZt4W_PAunM+&mYc19d?Op#;aPi0aW0zO&o<976*}Qbqd;in#hJV_<W31$FxA%U- zrK`)fH`?tnBoKWzG^RAHweFDq0`^IaS^h{wbXsGPsEAu;q%$xDml0_gR4=i&b=;QK z68%}uRLD%5#IyzL+lWtB!`G~bk#@0ac{)498EbcEhj|VWLelV16HoSNXugo7R`N@n zdbcDGHE=U;mpJD>7LT*&XEDg4Lg%X>GkrJ%k-dUwv2vq<26S|Nn6Cu_8PvifH;?Ms zAGz#Q$<)MDU1Zlp_Ku0`F0!8^LZ5*ME)7!}*(b<(5T=exsh}F3tPFOx4(fPBuyO}S zb&!X30~)S~N5=?$4s2pU1lZca0^4DbS2H1>R?RIlh8P#QD`Mq<-X`eeFiqpp6WL!; z(5U{ef)Mn7W%O%>1$#FuFc4i;r7CFUGBzs+Yp_muSz;3mkrBD9Sn>7ZNffzCWc5kI zPJRu`YteBSh~cJoUOe`~PFpk-;pAMHEyWYCV4l~y*wx+>#O!CJ;iqv)emba8HyxA( z@tmYE#Wb8OChjcdS-sZ7t~S#l4L8;D+M*Iq3aoexWyU6&WcEwG-6HoC0z0`Zhon+A zI+c14)YaUE&}=wP6dcixO6^yU`=G9pMkOD<otn9`(77s-8&3-|9D+xqG%7fQom|SO zW%yq~<c`9IBJ*n1ut?a&|2MgrLgYH$7rX^7cC67d`80)sr3`Ka!@77WrJTdgZBvCO zTgyx#Q*E=YltR{5-HDJ|U-sv10&k+mZ~9}8OlEN7XSR-|W>1uf^$*4RRdG3H4Q=!N E11$C4qW}N^ diff --git a/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll b/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll index d3aa7dbd2156ac4488382fc2acf684d0ae46dee4..3158315594f6e78cad28e5813756240d0c624b95 100644 GIT binary patch delta 941 zcmZ8gO-NKx6#nj;H?MKVrWyZIG|>br8V1EbN}1HLL|SN=4HEHsj$;mtKfIYBA)5)w zf`l4gi)a-jfzZO3ZHOckL_~{Rv@i%-wP`O!efRoPbl`mFeCM8X&;8AXa-oO!^vTiu za(<~se8{iF{5Q`5gP>dmy4?Bt(&8LYEI9{ioO&(fjEX_=sjwnqS|GAsdGT&zS?`0b z?84%U`SL<g{~<K2I>IP*7aM?JMTawF9M6U{py3wqnD&wMhck9^`dXS(Bjg5j+J=!~ zG|>-8zkg()kG7lqz2v>AnK4=^EElnIpok8(MGGnzpc|yhd1P2x7gesEnpFuhAQORi zV#gY&6@8k4`wDNMSv!Pr)*Fba$TO@61Ge~1{0)h(6n<71QSl}EUUXtZ_)(^9Fy{*7 zoJ-mkBR^H6EKsW&3obx#hnL9Olz&?Uuqif0519@ZnXK4h2GUwB7jqa#G1M(5c!O_j zAa>azj-l}{tMs$2zBjhZ<d$36pT}~CJ9A-PD}rAWJT94DMfBo?@|%ePoKo1Ma6sV& zg`)~Bg>ys$Vfd(Fl%j)J%}s^T0F!tU<HQy`A$H<9vSCE=lH@$rh{I~&GI0TM7U;RX zi{Uzz$n)XV?@KxQl`qf6yC1EVS4}Sd$=y%~uB%tT!LCT$H2W%&>DiPu7fo5|bW5Ar zgv4}WYOdLN>gleE&P>fFQwh7DG26-{#(Oe+n`75Ag)g2(5gbZcnTZ*DDmrP|Ry>oi zow#?x(-mno&CF!ddFwsW{{KIKUMGadRR`gw6AVh~_pF{Vv%yX8X_ryrp`LY0e6J5K g^Iz@Bn)B6HEmjM^d`VI8`?uZN$9DCl@=XW+0K09NDF6Tf delta 767 zcmZ9KOK1~O7=_P2nHiHwNE1V&wM82OrPUA{im$2|HClqwR?-lPiVvz16~zZGT$l(& z3MtabtXp(ZFwliKAmUPjg1dt5T)5Ju`{2TJZ#9aSx!*nKzwdu;JyXvtEtq`|9)58b z2V}@?Rid9x08?PO2pqE9R3cIbBJ^+AG2o?)j5jM&lJQ$oF=FN1%4Fv0dT}jRxVmuu zdfktkKg2-L6FXteS%7fHK5yC{u6-3C{RlX10D0DQ>Hgj7t!wwVG!{*OAJXL#mMCIM zPn3%Vw$JF>${)LV`!ZWqI9(=sfsisC8AFl*${yChKQ&CPD*I}>189mG2-x_>nKnwI zn8$bN!8WdIV~391z#YcN<rVn>iu0P!HEkWAp?0tx4T<8TG&p9zv8tEf*h9Fn@G=Lu zUu};zk0pj>S(d|eCZ_Z1DDSbxsq))Bfm*Wbwzk>F6fm-dG?3#V0~j$vX!9y@(ncTY zU_|R2skT%+s##Q=!5M94H7{vqnVcbHk-%=UACqJn6>=BOkz;6*2eCpPM~gg#*JMe@ z&!XwM!9+pbj(@sada+Y$l>?_6UDqjbc#Xef8yjij7%vpc`*Wdr@jA{GuNv;p{{OOI z4vGW=gAj`%9#=LRe0k(TE&kaV_uhuzZT`s@`llpMQsv!LQiA?!q$=L1@xqTrJC-rL KS3gpBbki?{xOnRT diff --git a/README.md b/README.md new file mode 100644 index 0000000..01252d5 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Pohja Ohjelmointi 1 -kurssin harjoitustöiden GIT-repoille. + +Tämä on pohja Ohjelmointi 1 -kurssin harjoitustöiden Git-repoille. +Opiskelija forkkaa tämän repon omaa harjoitustyötään varten. +`fork`-toiminto löytyy sivun yläreunasta. + +Muokkaa gitlab.jyu.fi-palvelussa oman projektisi asetuksia, kuten projektin nimeä +ja projektin kuvausta kohdasta Settings. + +Lue Git-versiohallinnan tarkemmat käyttöohjeet TIMistä: <https://tim.jyu.fi/view/kurssit/tie/ohj1/harjoitustyo/git> + diff --git a/Suunnitelma/README.md b/Suunnitelma/README.md new file mode 100644 index 0000000..ab9998f --- /dev/null +++ b/Suunnitelma/README.md @@ -0,0 +1 @@ +# Pohja Ohjelmointi 1 -kurssin harjoitustöiden GIT-repoille. diff --git a/gitignore b/gitignore new file mode 100644 index 0000000..dfcfd56 --- /dev/null +++ b/gitignore @@ -0,0 +1,350 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ -- GitLab