Skip to content
Snippets Groups Projects
Commit 426f91f8 authored by Vesa Lappalainen's avatar Vesa Lappalainen :bicyclist:
Browse files

live14 loppu

parent fd058f4b
No related branches found
No related tags found
No related merge requests found
......@@ -13,23 +13,73 @@ public class LaskeMatka : PhysicsGame
/// <summary>Koordinaatistoakselit</summary>
private Axis akselit; // Atribuutti
private PhysicsObject klikattuPiste;
private const double x1 = -5;
private const double x2 = 20;
private const double y1 = -5;
private const double y2 = 20;
private const double pallonKoko = (y2 - y1) / 300;
private readonly Vector[] pisteet = new Vector[10]; // taulukolle
private int lkm = 0; // taulukolle
private readonly DoubleMeter yhteismatka = new DoubleMeter(0);
private Label matkanaytto;
public override void Begin()
{
Level.Background.Color = Color.White;
akselit = new Axis(x1, y1, x2, y2);
klikattuPiste = LuoPallo(this, Vector.Zero, 1.5 * pallonKoko, Color.Blue);
Camera.ZoomTo(x1, y1, x2, y2);
matkanaytto = new Label("0.0");
matkanaytto.BindTo(yhteismatka);
Add(matkanaytto);
matkanaytto.Position = new Vector(400, 300);
matkanaytto.DoubleFormatString = "{0:0.000} m";
AsetaOhjaimet();
LaskeMatkaNayttoon();
}
/// <summary>
/// Lasketaan matka ja laitetaan tulos näyttöön
/// </summary>
private void LaskeMatkaNayttoon()
{
double dist = SummaaEtaisyydet(pisteet, lkm); // Taulukolle
yhteismatka.Value = dist;
}
/// <summary>
/// Lasketaan listassa olevien pisteiden vöisten etäisyyksien summa
/// </summary>
/// <param name="pisteet"></param>
/// <param name="lkm">paljonko käytetty</param>
/// <returns></returns>
public static double SummaaEtaisyydet(Vector[] pisteet, int lkm) // taulukolle
{
double d = 0;
if (lkm < 2) return 0;
Vector p1 = pisteet[0];
for (int i = 1; i < lkm; i++)
{
Vector p2 = pisteet[i];
double s = Vector.Distance(p1, p2);
d += s;
p1 = p2;
}
return d;
}
/// <summary>
/// Asetetaan ohjaimet peliä varten. F1 ja ESC.
/// Kuunnellaan hiiren paikkaa ja siirretään merkkipisteen sen mukaan mihin klikattu
......@@ -56,9 +106,33 @@ public class LaskeMatka : PhysicsGame
/// <param name="piste">paikka johon sininen piste</param>
private void LisaaPiste(Vector piste)
{
// siirretään sininen pisteen kohdalle
klikattuPiste.Position = piste;
if ( lkm < pisteet.Length ) { pisteet[lkm] = piste; lkm++; } // taulukolle
// pisteet.Add(piste); // listalle
LuoPallo(this, piste, pallonKoko, Color.Black);
LaskeMatkaNayttoon();
}
/// <summary>
/// Piirretään viivat pisteiden välille.
/// </summary>
/// <param name="canvas"></param>
private void PiirraPisteidenValisteViivat(Canvas canvas)
{
if (lkm < 2) return;
canvas.BrushColor = Color.Green;
Vector p1 = pisteet[0];
for (int i = 1; i < lkm; i++)
{
Vector p2 = pisteet[i];
canvas.DrawLine(p1, p2);
p1 = p2;
}
}
/// <summary>
/// Lisätään peliin pallo
/// </summary>
......@@ -84,6 +158,7 @@ public class LaskeMatka : PhysicsGame
protected override void Paint(Canvas canvas)
{
akselit.Draw(canvas);
PiirraPisteidenValisteViivat(canvas);
}
}
......
......@@ -23,8 +23,51 @@ public class Matriisit
// int[,] mat2 = new int[6, 5];
// mat[0, 0] = 2;
int lkm = 0; // MonellakoRivilla(mat, 5);
int lkm = MonellakoRivilla(mat, 5);
Console.WriteLine(lkm);
}
/// <summary>
/// Lasketaan monellako rivillä taulukossa esiintyy etsittävä luku.
/// Jos luku on useasti samalla rivillä, rivi lasketaan yhden kerran.
/// </summary>
/// <param name="mat">matriisi, josta lukua etsitään</param>
/// <param name="etsittava">luku jota etsitään</param>
/// <returns>monellako rivillä etsittävä oli</returns>
/// <example>
/// <pre name="test">
/// int[,] t = { {2,1,2},
/// {3,4,2},
/// {1,0,1},
/// {1,8,9} };
/// MonellakoRivilla(t,2) === 2;
/// MonellakoRivilla(t,5) === 0;
/// MonellakoRivilla(t,0) === 1;
/// MonellakoRivilla(t,1) === 3;
/// MonellakoRivilla(new int[0,0],1) === 0;
/// </pre>
/// </example>
public static int MonellakoRivilla(int[,] mat, int etsittava)
{
int riveja = mat.GetLength(0);
int sarakkeita = mat.GetLength(1);
int lkm = 0;
for (int iy = 0; iy < riveja; iy++)
{
for (int ix = 0; ix < sarakkeita; ix++)
{
int luku = mat[iy, ix];
if (luku == etsittava)
{
lkm++;
break;
}
}
}
return lkm;
}
}
\ No newline at end of file
// ReSharper disable all
using System;
using NUnit.Framework;
using static Matriisit;
[TestFixture]
[DefaultFloatingPointTolerance(0.000001)]
public class TestMatriisit
{
[Test]
public void TestMonellakoRivilla39()
{
int[,] t = { {2,1,2},
{3,4,2},
{1,0,1},
{1,8,9} };
Assert.AreEqual( 2, MonellakoRivilla(t,2) , "in method MonellakoRivilla, line 44");
Assert.AreEqual( 0, MonellakoRivilla(t,5) , "in method MonellakoRivilla, line 45");
Assert.AreEqual( 1, MonellakoRivilla(t,0) , "in method MonellakoRivilla, line 46");
Assert.AreEqual( 3, MonellakoRivilla(t,1) , "in method MonellakoRivilla, line 47");
Assert.AreEqual( 0, MonellakoRivilla(new int[0,0],1) , "in method MonellakoRivilla, line 48");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NUnit" Version="3.13.1"/>
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Matriisit\Matriisit.csproj"/>
</ItemGroup>
</Project>

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AngryLego", "AngryLego\AngryLego.csproj", "{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Matriisit", "Matriisit\Matriisit.csproj", "{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}"
......@@ -8,27 +9,33 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Muuttujat", "Muuttujat\Muut
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaskeMatka", "LaskeMatka\LaskeMatka.csproj", "{0753562C-41AC-479A-881D-7A4390164FE2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatriisitTest", "MatriisitTest\MatriisitTest.csproj", "{DF666C5A-724B-4EE3-8411-85AB6F463E31}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.Build.0 = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.Build.0 = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.Build.0 = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.Build.0 = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.Build.0 = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.Build.0 = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.Build.0 = Release|Any CPU
{DF666C5A-724B-4EE3-8411-85AB6F463E31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF666C5A-724B-4EE3-8411-85AB6F463E31}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF666C5A-724B-4EE3-8411-85AB6F463E31}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF666C5A-724B-4EE3-8411-85AB6F463E31}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AngryLego", "AngryLego\AngryLego.csproj", "{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Matriisit", "Matriisit\Matriisit.csproj", "{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Muuttujat", "Muuttujat\Muuttujat.csproj", "{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaskeMatka", "LaskeMatka\LaskeMatka.csproj", "{0753562C-41AC-479A-881D-7A4390164FE2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA543AF2-84EB-4DE8-989C-4AFDCBD50B0C}.Release|Any CPU.Build.0 = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ABDB4FD-1924-4E82-B02D-EA74C2FE56D4}.Release|Any CPU.Build.0 = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{136FC6FD-1DD1-4690-95D7-1E52651FC2BE}.Release|Any CPU.Build.0 = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0753562C-41AC-479A-881D-7A4390164FE2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/.idea.luento16.iml
/modules.xml
/projectSettingsUpdater.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
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