1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace Co2_vs_seed // nom du jeux
{
public partial class Game : Form // crée la classe Game qui se situe dans Form
{
WMPLib.WindowsMediaPlayer chocobo = new WMPLib.WindowsMediaPlayer();
PictureBox pb = new PictureBox(); // crée une picturebox
int seed; // variable seed numérique (nb graine)
int life; // nombres de vies ( 3 max peut pas descendre en dessous de 0 )
int x; // valeur pour le timer
int y; // timer
int dx; // Valeur X du deplacement du nuage
int dy; // Valeur Y du deplacement du nuage
int human_x1; // variable fermier X
int human_y1; // variable fermier Y
public Game() // Initialisation de la fenetre
{
InitializeComponent();
}
private void Game_Load(object sender, EventArgs e) // lors du chargement de la fenêtre
{
chocobo.settings.setMode("loop", true);
chocobo.URL = "C:\\chocobo.mp3";
chocobo.controls.play();
human_x1 = 738;
human_y1 = 89;
dx = -2;
dy = -2;
seed = 2;
life = 3;
}
private void Hotkeys(object sender, KeyEventArgs e) // Raccourcis clavier
{
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////Human Moves////////////////////////////////////////////////////////////////////////
int human_x = human.Location.X; // Instancie La location X dans la variable human_x
int human_y = human.Location.Y; // Instancie La location Y dans la variable human_Y
switch (e.KeyData) // raccourcis de mouvement
{
case Keys.D:
human_x1 += 10;
human.Image = Image.FromFile("c:\\right.png");
break;
case Keys.Q:
human_x1 -= 10;
human.Image = Image.FromFile("c:\\left.png");
break;
case Keys.Z:
human_y1 -= 10;
human.Image = Image.FromFile("c:\\back.png");
break;
case Keys.S:
human_y1 += 10;
human.Image = Image.FromFile("c:\\front.png");
break;
}
if (human_x1 < 0) // Si le cloud_x est inferieur a 0
{
human_x1 = 0; // Alors le cloud_y = 0 Empeche de sortir de la bordure gauche
}
if (human_x1 > this.ClientSize.Width - 50) // Empeche sortir bord droite
{
human_x1 = this.ClientSize.Width - 50; // si cloud x > a la largeur du client - 50 pixel alors cloud x est = a la largeur -50
}
if (human_y1 < 0) // Si le cloud_x est inferieur a 0
{
human_y1 = 0; // Alors le cloud_y = 0 Empeche de sortir de la bordure haut
}
if (human_y1 > this.ClientSize.Width - 50) // Empeche sortir bord droite
{
human_y1 = this.ClientSize.Width - 50; // si cloud x > a la largeur du client - 50 pixel alors cloud x est = a la largeur -50
}
human.Location = new Point(human_x1, human_y1);// Spawn le personnage a chaques mouvements
////////////////////////////////////////Human Hotkeys/////////////////////////////////////////////////////////////////////
if (e.KeyCode == Keys.R && human_x1 > 700 && human_y1 < 20) // Recharge Graines si le x est sup a 700 et y inf a 20
{
seed = 2; // Met la valeur de Seed a 2
label2.Text = Convert.ToString(seed); // insere la valeur de la variable seed dans le text du label2
}
if (e.KeyCode == Keys.Space && seed > 0) // Plante une graine
{
seed = seed - 1; // enleve 1 a la variable seed et le met dans seed
label2.Text = Convert.ToString(seed); // Change la valeur du label et le convertit en string
PictureBox pb = new PictureBox();
pb.Size = pictureBox4.Size;
pb.BackColor = pictureBox4.BackColor;
pb.BackgroundImage = pictureBox4.BackgroundImage;
pb.Location = human.Location; // pas bon ça
pb.BackgroundImageLayout = pictureBox4.BackgroundImageLayout;
this.Controls.Add(pb);
}
if (seed < 0) // Si le seed est inferieur a 0 empeche nombre négatif
{
seed = 0; // Alors le remet remet a 0
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////Cloud moves////////////////////////////////////////////////////////////////////////
int cloud_x = cloud.Location.X; // Instancie La location X dans la variable cloud_x
int cloud_y = cloud.Location.Y; // Instancie La location y dans la variable cloud_y
switch (e.KeyData)
{
case Keys.Right:
cloud_x += 10;
break;
case Keys.Left:
cloud_x -= 10;
break;
}
if (cloud_x < 0) // Si le cloud_x est inferieur a 0
{
cloud_x = 0; // Alors le cloud_y = 0 Empeche de sortir de la bordure gauche
}
if (cloud_x > this.ClientSize.Width - 50) // Empeche sortir bord droite
{
cloud_x = this.ClientSize.Width - 50; // si cloud x > a la largeur du client - 50 pixel alors cloud x est = a la largeur -50
}
cloud.Location = new Point(cloud_x, cloud_y); // lis la localisation du personnage
////////////////////////////////////////Cloud Hotkeys/////////////////////////////////////////////////////////////////////
switch (e.KeyData) // deplacement du nuage
{
case Keys.NumPad1:
timer1.Start();
break;
case Keys.NumPad2:
timer2.Start();
break;
}
////////////////////////////////////////Games Hotkeys/////////////////////////////////////////////////////////////////////
if (e.KeyCode == Keys.Escape) // quitte le jeux
{
Application.Exit(); // Ferme l'application
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////Timer Cloud////////////////////////////////////////////////////////////////////////
private void Cloud_launcher(object sender, EventArgs e) // creation du timer
{
x = cloud.Location.X + dx; // Dit que x est egal a x + la distance x du nuage
y = cloud.Location.Y + dy; // Dit que y est egal a y + la distance y du nuage
cloud.Location = new Point(x, y); //Je hais cette ligne, elle est maudite
pb.Size = pictureBox4.Size;
pb.BackColor = pictureBox4.BackColor;
pb.BackgroundImage = pictureBox4.BackgroundImage;
pb.Location = human.Location; // pas bon ça ERREUR
pb.BackgroundImageLayout = pictureBox4.BackgroundImageLayout;
Rectangle pb_rectangle = new Rectangle(pb.Location.X, pb.Location.Y, 60, 60);
Rectangle cloud_rectangle = new Rectangle(x, y, 60, 60);
if (pb_rectangle.IntersectsWith(cloud_rectangle))
{
x = 397; // reinitialise le nuage
y = 422; // reinitialise le nuage
dx = -2; // reinitialise le nuage
dy = -2; // reinitialise le nuage
cloud.Location = new Point(x, y); // reinitialise le nuage
System.Threading.Thread.Sleep(500); // pause anti bug
timer1.Stop(); // arrete le timer
pb.Visible = false;
pb.Image = null;
gameover.Text = "Game Over";
}
if (x < 0) // Si x est inferieur a 0
{
dx = -dy; // alors dx = a -dx, permet le renvois du nuage s'il touche la parois gauche
}
else if (x + 50 > this.ClientSize.Width) // Permet le renvois du nuage s'il touche la parois droite
{
dx = -dx;
}
if (y < dy) // touche parois du haut perd 1 vie et reset
{
life = life - 1; // enleve une vie et la met dans la variable life
label4.Text = Convert.ToString(life); // met la valeur dans le label
x = 397; // reinitialise le nuage
y = 422; // reinitialise le nuage
dx = -2; // reinitialise le nuage
dy = -2; // reinitialise le nuage
cloud.Location = new Point(x, y); // reinitialise le nuage
System.Threading.Thread.Sleep(500); // pause anti bug
timer1.Stop(); // arrete le timer
}
if (life == 0)
{
gameover.Text = "Game Over";
}
}
private void Cloud_Right_Timer(object sender, EventArgs e) // Timer pour la droite
{
{
x = cloud.Location.X + dx; // Dit que x est egal a x + la distance x du nuage
y = cloud.Location.Y + dy; // Dit que y est egal a y + la distance y du nuage
cloud.Location = new Point(x, y); //Je hais cette ligne, elle est maudite
Rectangle pb_rectangle = new Rectangle(pb.Location.X, pb.Location.Y, 60, 60); // ERREUR ICI
Rectangle cloud_rectangle = new Rectangle(x, y, 60, 60);
if (pb_rectangle.IntersectsWith(cloud_rectangle))
{
x = 397; // reinitialise le nuage
y = 422; // reinitialise le nuage
dx = -2; // reinitialise le nuage
dy = -2; // reinitialise le nuage
cloud.Location = new Point(x, y); // reinitialise le nuage
System.Threading.Thread.Sleep(500); // pause anti bug
timer1.Stop(); // arrete le timer
pb.Visible = false;
pb.Image = null;
gameover.Text = "Game Over";
}
if (x < 0) // Si x est inferieur a 0
{
dx = -dy; // alors dx = a -dx, permet le renvois du nuage si il touche la parois gauche
}
else if (x + 50 > this.ClientSize.Width) // Permet le renvois de la balle de la parois Droite
{
dx = -dy;
}
if (y < dy) // touche parois du haut perd 1 vie et reset
{
life = life - 1; // enleve une vie et la met dans la variable life
label4.Text = Convert.ToString(life); // met la valeur dans le label
x = 397; // reinitialise le nuage
y = 422; // reinitialise le nuage
dx = -2; // reinitialise le nuage
dy = -2; // reinitialise le nuage
cloud.Location = new Point(x, y); // reinitialise le nuage
System.Threading.Thread.Sleep(500); // pause anti bug
timer1.Stop(); // arrete le timer
}
if (life == 0)
{
gameover.Text = "Game Over";
}
}
}
}
} |
Partager