Salutari , am decis sa particip si eu la concursul curent de pe acest site , chiar daca n-am nici o sansa , pt. a imi extinde experienta ca programator si sa vad cum este sa realizezi un joc intr-un termen limita ca cei de la companiile mari.Am decis sa fac un devblog in care sa arat progresele mele in acest proiect tuturor de pe site.
Iunie 2011 , 17 Pana acum nu m-au interesat jocurile de tip tower defense , mai mult eram adeptul platformer-elor , action RPG , turn-based RPG , hack n slashurilor si altele.Am inceput documentatia jucanduma cateva jocuri tower defense pe internet si ce am observat este ca toate sunt concentrate in jurul GUI cu foarte multe butoane.Asa ca am scris o clasa numita Button.cs care va fi baza tuturor butoanelor din joc . Clasa arata asa:
Cod sursă:
class Button
{
Rectangle rectangle;
Texture2D currentTex;
Texture2D image1;
Texture2D image2;
Texture2D image3;
public Vector2 position;
public bool clicked;
public Button(Texture2D tex1 , Texture2D tex2 ,Texture2D tex3, Vector2 pos)
{
image1 = tex1;
image2 = tex2;
image3 = tex3;
currentTex = image1;
position = pos;
rectangle = new Rectangle((int)position.X,(int)position.Y,tex1.Width,tex1.Height);
clicked = false;
}
public void Update()
{
MouseState mouse = Mouse.GetState();
Rectangle mouseRec = new Rectangle((int)mouse.X, (int)mouse.Y, 5, 5);
if (mouseRec.Intersects(rectangle))
{
currentTex = image2;
if (mouse.LeftButton == ButtonState.Pressed)
{
clicked = true;
currentTex = image3;
}
}
else
{
currentTex = image1;
}
}
public void Draw(SpriteBatch sp)
{
sp.Begin();
sp.Draw(currentTex,position,Color.White);
sp.End();
}
}
Dupa acea am construit o clasa numita StartMenuScreen.cs care are la baza trei butoane Play , Options si Exit. Butonul Options inca nu face nimic , butonul Exit va incheia executia jocului iar butonul Play va afisa o mica harta pe ecran , generata de clasa TileMap.cs , un inamic , generata de clasa Enemy.cs si un buton Back care te va trimite inapoi la meniu.Inamicul , un punct alb , va naviga prin cararea dintre blocurile harti pana la sfarsit . Acest lucru este posibil datorita proprietati din clasa Enemy.cs numita facing care in functie de valoarea ei (dreapta , stanga , sus , jos ) inamicul se va duce in acea directie . Directia inamicului poate fi schimbata daca inamicul intra in coliziune cu unele din blocurile din listele de blocuri ale clasei TileMap.cs . De exemplu daca inamicul va intra in coliziune cu unul dintre blocurile din lista blocksLeft atunci directia inamicului va fi stanga.Asta este ce am facut eu pt. astazi si va voi tine la curent cu progresele mele in continuare.
Aici este un link pt. a descarca fisierul executabil al primei parti din acest joc:
http://code.google.com/p/tower-defense-wip/downloads/list(s-ar putea sa aveti nevoie de Visual Studio si de update-urile la timp ale platformei .NET)