2018-01-05 22:18:28 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
using System.IO;
|
2018-01-05 22:18:28 +01:00
|
|
|
|
using System.Linq;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
using System.Media;
|
2018-01-05 22:18:28 +01:00
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace Bonhomme02
|
|
|
|
|
{
|
|
|
|
|
public partial class Form1 : Form
|
|
|
|
|
{
|
|
|
|
|
private Bonhomme bonhomme;
|
|
|
|
|
private Marcher marche;
|
|
|
|
|
private BufferedGraphics bufferG = null;
|
|
|
|
|
private Graphics g;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
SoundPlayer player = new SoundPlayer();
|
2018-01-09 20:19:49 +01:00
|
|
|
|
Stream str;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
List<Task> tasks = new List<Task>();
|
2018-01-05 22:18:28 +01:00
|
|
|
|
public Form1()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
// Modification contre le scintillement - Creation d'une mémoire tampon graphique
|
|
|
|
|
bufferG = BufferedGraphicsManager.Current.Allocate(TV.CreateGraphics(), TV.DisplayRectangle);
|
|
|
|
|
g = bufferG.Graphics;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
|
2018-01-05 22:18:28 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void timerImage_Tick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (/*this.bonhomme.Origine.X + this.bonhomme.Lhorizontal >= this.TV.Width*/1==2)
|
|
|
|
|
{
|
|
|
|
|
this.timerImage.Stop();
|
|
|
|
|
this.btnStopDeplacerCTick.Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2018-01-09 20:19:49 +01:00
|
|
|
|
bonhomme.Cacher(g);
|
2018-01-05 22:18:28 +01:00
|
|
|
|
bonhomme.coordonnee = new Point(bonhomme.coordonnee.X + 3, bonhomme.coordonnee.Y + 0);
|
2018-01-06 16:56:46 +01:00
|
|
|
|
bonhomme.jambe1.BougerBas(+3, -3);
|
2018-01-09 20:19:49 +01:00
|
|
|
|
bonhomme.Afficher(g);
|
2018-01-05 22:18:28 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnStopDeplacerCTick_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.timerImage.Stop();
|
|
|
|
|
this.btnStopDeplacerCTick.Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnEffacer_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Graphics gr = Graphics.FromHwnd(this.TV.Handle);
|
|
|
|
|
gr.FillRectangle(new SolidBrush(this.TV.BackColor), 0, 0, this.TV.Bounds.Width, this.TV.Bounds.Height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCreationCarrosse_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
2018-01-09 13:49:11 +01:00
|
|
|
|
|
2018-01-09 20:19:49 +01:00
|
|
|
|
bonhomme = new Bonhomme(ref this.TV, 80, 80, 50, 20, Math.PI / 2);
|
2018-01-09 13:49:11 +01:00
|
|
|
|
bonhomme.jambe1.Bas.Fond = bonhomme.jambe1.Millieux.Fond = bonhomme.jambe1.Haut.Fond = Color.Pink;
|
|
|
|
|
bonhomme.jambe2.Bas.Fond = bonhomme.jambe2.Millieux.Fond = bonhomme.jambe2.Haut.Fond = Color.DeepPink;
|
|
|
|
|
bonhomme.tete.Fond = Color.Pink;
|
2018-01-09 20:19:49 +01:00
|
|
|
|
bonhomme.Afficher(g);
|
|
|
|
|
marche = new Marcher(ref bonhomme, bufferG, this.Sol.Location.Y-this.TV.Location.Y);
|
2018-01-05 22:18:28 +01:00
|
|
|
|
Thread.Sleep(1000);
|
2018-01-09 13:49:11 +01:00
|
|
|
|
if (tasks.Count == 0)
|
|
|
|
|
{
|
2018-01-09 20:19:49 +01:00
|
|
|
|
str = global::Bonhomme02.Properties.Resources.NyanCatoriginal;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
player.Stream = str;
|
2018-01-09 20:19:49 +01:00
|
|
|
|
this.NyanCatGif.Image = global::Bonhomme02.Properties.Resources.tumblr_opsismTLqh1vghf22o1_400;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
player.Play();
|
|
|
|
|
}
|
|
|
|
|
// https://msdn.microsoft.com/fr-be/Library/dd270696(v=vs.110).aspx
|
|
|
|
|
tasks.Add(Task.Factory.StartNew(() => {
|
2018-01-09 20:47:44 +01:00
|
|
|
|
marche.Saut(ref this.Obstacle, 5);
|
2018-01-09 13:49:11 +01:00
|
|
|
|
}));
|
|
|
|
|
var continuation = Task.WhenAll(tasks); //https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks
|
|
|
|
|
Task continuationTask = continuation.ContinueWith((antecedent) => {
|
|
|
|
|
tasks.RemoveAt(0);
|
|
|
|
|
if (tasks.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
player.Stop();
|
2018-01-09 20:19:49 +01:00
|
|
|
|
str = str = global::Bonhomme02.Properties.Resources.Super_Mario_Bros_Win_Stage_Sound_Effect;
|
|
|
|
|
player.Stream = str;
|
|
|
|
|
player.Play();
|
|
|
|
|
this.NyanCatGif.Image = null;
|
2018-01-09 13:49:11 +01:00
|
|
|
|
}
|
|
|
|
|
});
|
2018-01-05 22:18:28 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Form1_MouseMove(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MousePosition.Offset(this.Location);
|
|
|
|
|
Console.WriteLine(MousePosition);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|