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
| using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Audio;
namespace MonsterWorld
{
class plateau
{ //texture
private Texture2D texturePaysage;
//police
private SpriteFont policeMessage;
// pour positionner le paysage
private Rectangle rectPaysage;
// etat du jeu
private etatsJeu etatCourant;
//temps total depuis le début du jeu
private double tempsParties = 0;
//personnages du plateau
private homme unhomme;
private monstre unmonstre;
//indique si le son a été joué
// private bool sonjoué;
//constructeur
public plateau(int largeur, int hauteur)
{
InitJeu();
rectPaysage = new Rectangle(0, 0, largeur, hauteur);
}
//intialise les données du jeu
private void InitJeu()
{
rectPaysage.X = 0; //position du paysage
// sonjoué = false;
unhomme = new homme(); //instancie un homme
unmonstre = new monstre(); //instancie un monstre
etatCourant = etatsJeu.encours;
}
public void LoadGraphicsContent(ContentManager monContent)
{ //charge les textures
texturePaysage = monContent.Load<Texture2D>("images/paysage") as Texture2D;
homme.LoadGraphicsContent(monContent);
monstre.LoadGraphicsContent(monContent);
policeMessage = monContent.Load<SpriteFont>("maPolice") as SpriteFont;
}
public void Update(GamePadState EtatGamePad, KeyboardState EtatClavier, GameTime Temps)
{
if (etatCourant == etatsJeu.encours)
{
if (Temps.TotalGameTime.TotalMinutes - tempsParties < 10)
{//positionnement du paysage
rectPaysage.X--;
if ( rectPaysage.X<=-rectPaysage.Width)
{
rectPaysage.X=0;
}
unhomme.Update(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), rectPaysage);
unmonstre.Update(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Temps, rectPaysage);
//détection de collision
if (unhomme.collision(unmonstre))
etatCourant = etatsJeu.perdu;
}
else etatCourant = etatsJeu.gagne;
}
else
{//si l'état courant est perdu ou gagné
if (EtatClavier.IsKeyDown(Keys.Enter))
{// si le joueur a appuyé sur entrer
etatCourant = etatsJeu.encours;
tempsParties = Temps.TotalGameTime.TotalMinutes;
this.InitJeu();
}
}
//Sound.Update();
}
public void Draw(SpriteBatch monSpriteBatch, GameTime temps)
{ //le rectangle définit la position de l'affichage de l'image, mais aussi sa taille
//dessine 2 fois le paysage pour donner un effet de défilement
monSpriteBatch.Draw(texturePaysage, rectPaysage, Color.White);
Rectangle rectPaysage2 = new Rectangle(rectPaysage.X + rectPaysage.Width, 0, rectPaysage.Width, rectPaysage.Height);
monSpriteBatch.Draw(texturePaysage, rectPaysage2, Color.White);
//dessine les personnages
unhomme.Draw(monSpriteBatch, etatCourant);
unmonstre.Draw(monSpriteBatch);
if (etatCourant == etatsJeu.encours)
{
monSpriteBatch.DrawString(policeMessage, "Times: " + ((int)(temps.TotalGameTime.TotalMinutes - tempsParties)).ToString(), new Vector2(10, rectPaysage.Height / 40), Color.Red);
}
else
{
if (etatCourant == etatsJeu.perdu)
{
monSpriteBatch.DrawString(policeMessage, "Perdu!!", new Vector2(rectPaysage.Width / 2, rectPaysage.Height / 2), Color.Red);
}
else
monSpriteBatch.DrawString(policeMessage, "Gagne!!", new Vector2(rectPaysage.Width / 2, rectPaysage.Height / 2), Color.Red);
}
}
}
} |
Partager