PDA

Pogledaj cijelu verziju : C# - problem deklaracije



DragonSoul
24-03-2008, 20:58
Počeo sam učiti C#, jer želim početi raditi u XNAu. Imam u glavi jedan veći projekt koji želim pokušati dovesti u neku betu do kraja godine. E, sada (to će biti strateško-kartaška igra), imam problem u samom izmišljanju koncepta kako ću to napraviti. Mislio sam napraviti klasu Card koja bi imala u sebi sve potrebne važne stvari kao što su ime, atk, def, textura, id i druge stvari koje mi budu bile na pameti. Počeo sam učiti C# i vidim da ne mogu deklairati objekt izvan metode (barem meni nije uspjelo), što bi mi moglo napraviti nekoliko problema. A sad mene zanima kako ću ja uopće napraviti da određena funkcija zna o kojem se objektu radi? Jer ako bude npr. 100 karti, to bi onda značilo cca 10 000 kombinacija koja ja nebi sam deklairaio (treba me u umobolnicu ako tako što pomislim raditi). I ja bi te karte deklarirao u nekoj vanjskoj bazi podataka, tako da mogu samo card pakete praviti za dodatne karte. Sada, kako bi ja to mogao sve povezati, ako mi netko može uputiti na neki primjer ili napisati neki primjer, jer ja sam se preznojio dok sam ovo napisao. Ne mogu si posložiti u glavi kako to napraviti.

EDIT:
Evo pokušao sam nešto, ali mi ne radi :shock:

Card.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace CardDefinition
{
class Card
{
string Ime;
int ATK_Snaga;
int DEF_Snaga;
int MainTip;
int Tip;
int HeroKarta;
//Texture2D Textura;
int ID;

public void InicizacijaKarte(string setIme, int setATK_Snaga, int setDEF_Snaga, int setMainTip, int setTip, int setHeroKarta, /*Textura*/ int setID)
{
string Ime = setIme;
int ATK_Snaga = setATK_Snaga;
int DEF_Snaga = setDEF_Snaga;
int MainTip = setMainTip;
int Tip = setTip;
int HeroKarta = setHeroKarta;
//Texture2D Textura = setTextura;
int ID = setID;
}

public string getIme()
{
return Ime;
}

public int getATK_Snaga()
{
return ATK_Snaga;
}

public int getDEF_Snaga()
{
return DEF_Snaga;
}

public int getMainTip()
{
return MainTip;
}

public int getTip()
{
return Tip;
}

public int getHeroKarta()
{
return HeroKarta;
}
}
}

Program.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace Card_Game_Console_Based
{
class MainClass
{
public static void Main()
{
CardDefinition.Card DapiferOfLucis = new CardDefinition.Card();
DapiferOfLucis.InicizacijaKarte("Dapifer of Lucis", 10, 9, 1, 5, 1, 0);

Console.WriteLine(DapiferOfLucis.getIme());
Console.ReadLine();

}

}
}

Čini mi se da još jako puno moram učiti, jer to ni slično ne radi kao u Cppu :-x

Luka
24-03-2008, 22:13
sry, nisam najbolje shvatio u ćemu je problem ?

ako si mislio na samo spremanje i kasnije učitavanje tih karata, napravi karte u xmlu, i metode za učitavanje/pohranjivanje u Card klasi


edit : ako ti ne radi ovo što si napisao, stavi public ispred "class Card", a inicijaliziraš objekt s "public Card(int arg1, int arg2) { // kod }" , dakle bez onog void i s imenom jednakim klasi

DragonSoul
24-03-2008, 22:29
sry, nisam najbolje shvatio u ćemu je problem ?

ako si mislio na samo spremanje i kasnije učitavanje tih karata, napravi karte u xmlu, i metode za učitavanje/pohranjivanje u Card klasi


edit : ako ti ne radi ovo što si napisao, stavi public ispred "class Card", a inicijaliziraš objekt s "public Card(int arg1, int arg2) { // kod }" , dakle bez onog void i s imenom jednakim klasi

Kako da napravim u XMLu, kako da učitam taj XML u igru i kako ću kasnije nadodavati karte? Ja želim napraviti ugrađenu funkciju s kojom ću ja odabrati neki .dat ili već neki drugi u kojem će biti i slike karti i deklaracije. Ali ok, budem probao ovo što si rekao, jer ako to meni proradi na console bazi, ja ću skoćiti toliko visoko da više neću moći pasti, jer više sila teže neće djelovati na mene.

Luka
24-03-2008, 22:37
U xmlu otprilike ovako :


<karta>
<kategorija1>
<varijabla>sadržaj_varijable</varijabla>
</kategorija1>
</karta>

Za korištenje xmla ne moraš se brinuti jer C#, točnije .NET Framework ima ugrađene funkcije za rad s XML-om. Ako te zanima kako izgleda datoteka u XML-u, pogledaj u mapu moje igre (Colliball), u mapi Levels. U XML ne možeš umetati sam slike. Za nadodavanje karti, možeš napraviti još jednu datoteku u koju ćeš spremati listu lokacija svih dostupnih karti. Iz nje učitavaš tako što prolaziš kroz svaki red, za svaki red instanciraš novi objekt Card klase s argumentom u kojem piše adresa do xml-a, Card na osnovi xml-a učita sadržaje svojih varijabli, i na kraju dodaješ sve te karte u neko polje.

DragonSoul
24-03-2008, 22:44
Ček, šta je ta kategorija u tvom primjeru? A ja sam mislio u XML file spremiti lokaciju slike. Budem napisao mali primjer kako sam ja to sebi smislio, sad me boli glava :cry:

Luka
24-03-2008, 23:02
to sam stavio da pokažem da možeš stavljati tagove gdje želiš, pa možeš raditi i kategorije ... uglavnom sve je moguće u xml-u :)

DragonSoul
25-03-2008, 15:11
Gdje ima dobrih C# tutoriala, a da su možda i na hrv? Imam nekakve, ali želim još :D

Luka
25-03-2008, 18:03
neznam za hr, ali ovdje imaš i c# i xna : http://www.freewebs.com/campelmxna/tutorials.htm