C# - Hämta variablar och liknande från en annan .cs fil!

Permalänk
Medlem

C# - Hämta variablar och liknande från en annan .cs fil!

Hejsan!

Jag undrar om det finns ett sätt att hämta variablar och liknande från en annan .cs fil?
Håller på med ett textbaserat spel och vill försöka få koden så ren som möjligt.

Om ni inte förstår så vill jag t.ex. göra en .cs fil med alla variablar av en boss, t.ex. Bossnamn.cs Sedan så vill jag skriva in variablarna där som int bossHealth = 100;

Efter det så vill jag kunna hämta bossHealth variabeln från program.cs eller main filen med all kod. Är detta möjligt?

Svårt att förklara ^^ men gjorde mitt bästa!

Permalänk
Skrivet av FlawleX:

Hejsan!

Jag undrar om det finns ett sätt att hämta variablar och liknande från en annan .cs fil?
Håller på med ett textbaserat spel och vill försöka få koden så ren som möjligt.

Om ni inte förstår så vill jag t.ex. göra en .cs fil med alla variablar av en boss, t.ex. Bossnamn.cs Sedan så vill jag skriva in variablarna där som int bossHealth = 100;

Efter det så vill jag kunna hämta bossHealth variabeln från program.cs eller main filen med all kod. Är detta möjligt?

Svårt att förklara ^^ men gjorde mitt bästa!

Skulle nog i det här fallet rekomendera så kallad xml serialization.

Du skriver en klass och skapar en instans av den, assignar dom värden du vill ha och sen kan du spara den som xml med serilization grejen.
Sen kan du vid start av ditt program läsa in filen och den mappar automagiskt alla dina variabler till det som finns i xml filen.

Plus med xml är att du själv ka läsa oc göra ändringar i den.
Nackdelen är att så kan även de som spelar ditt spel.

Finns också binär serilization, men den är tråkigare, blir bara en blob som inte går att tyda själv

Min favo tråd om ärendet:
http://stackoverflow.com/questions/67959/net-xml-serializatio...

Visa signatur

[MSI SpeedSter-FA4][Pentium M 770@160*16][X800GTO2 LE][A-Data PC4300 2GB][Maxtor 300GB S-ATA 16MB][NEC ND-3520A IDE][Thermaltake Xaser Tsunami Svart Aluminium][Hiper Type R 480W] //Betty (Kung Pow) [Outdated]

Permalänk
Medlem
Skrivet av Betty (Kung Pow):

Skulle nog i det här fallet rekomendera så kallad xml serialization.

Du skriver en klass och skapar en instans av den, assignar dom värden du vill ha och sen kan du spara den som xml med serilization grejen.
Sen kan du vid start av ditt program läsa in filen och den mappar automagiskt alla dina variabler till det som finns i xml filen.

Plus med xml är att du själv ka läsa oc göra ändringar i den.
Nackdelen är att så kan även de som spelar ditt spel.

Finns också binär serilization, men den är tråkigare, blir bara en blob som inte går att tyda själv

Min favo tråd om ärendet:
http://stackoverflow.com/questions/67959/net-xml-serializatio...

Finns det inga sätt där man inte använder sig utav XML? Är alla andra sätt dåliga så kör jag på XML.

Permalänk
Skrivet av FlawleX:

Finns det inga sätt där man inte använder sig utav XML? Är alla andra sätt dåliga så kör jag på XML.

Du kan ju göra en egen textfil med ny info på varjerad typ:

Bosshp:100
Bossname:boss

nackdelen då är att du själv måste skriva all kod som mappar det mot sina variabler.
Kan också använda reflection för att hitta variabler, men allt sånt är bra mycket värre en serialization.
Och när du ser att det fungerar med xml kan du byta till binär fil, samma data men icke läsbar för andra än ditt program.

Visa signatur

[MSI SpeedSter-FA4][Pentium M 770@160*16][X800GTO2 LE][A-Data PC4300 2GB][Maxtor 300GB S-ATA 16MB][NEC ND-3520A IDE][Thermaltake Xaser Tsunami Svart Aluminium][Hiper Type R 480W] //Betty (Kung Pow) [Outdated]

Permalänk
Medlem

Spontant skulle jag väl tycka att en enum skulle funka, men har ej använt dem i C# nåt, vet att det skulle funka bra i Java iaf ^^.
Då hade du kunnat haft en enum t.ex. "Bosses" eller "Monster", med ett antal olika typer t.ex. "Boss 1" "Boss 2" "Skeleton" osv. Varje typ kan då även ha properties som är satta för t.ex. hälsa, exp, skada och what not.

Hitta ett litet exempel från mitt första spel

public enum BuildingTypes implements Serializable{ //Production building, converting Raw material to products //Mint and Smith also uses Coal CITY_MINT ("Mint.gif",850, 50, ResourceTypes.RES_COIN, 5, ResourceTypes.RES_GOLD,5), CITY_SMITH ("Smith.gif",700, 10, ResourceTypes.RES_WEAPON, 5, ResourceTypes.RES_IRON,5), CITY_SAWMILL ("Sawmill.gif",450, 25, ResourceTypes.RES_PLANK, 10, ResourceTypes.RES_WOOD), CITY_BAKERY ("Bakery.gif",550, 20, ResourceTypes.RES_FOOD, 10, ResourceTypes.RES_GRAIN), ...

Värdena är bland annat va byggnader ska kosta, hur lång tid det tar att bygga, vad de skall producera osv.

Som sagt är detta för Java så jag kanske skickar dig på dåliga vägar, om nån har mer koll på C# så får de gärna komplettera!:P
Så hade jag iaf gjort, i Java Samt eventuellt göra klass för monster osv som har en typ definierad av Enumen för att ge initiala värden, sedan får objekten hålla koll på information som hur mkt hälsa man har kvar osv.

Hoppas jag inte rörde till för mycket!

Lycka till!

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Det låter som om du beskriver en konkret klass.

Enemy.cs:

abstract class Enemy { public string Name { get; protected set; }; public int Heath { get; protected set; }; // osv... }

Boss.cs:

class Boss : Enemy { public Boss() { Name = "Big baddie"; Health = 9001; } }

i Main:

Enemy enemy = new Boss(); Console.WriteLine(enemy.Name); // Big baddie Console.WriteLine(enemy.Health); // 9001

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tänken är att du skall kunna komma åt alla värden via Enumen utan att behöva använda arv och skapa flera subklasser, en för varje typ. Så att du kan ha samtliga "typer" i en klass, lite som en samling konstanter fast smidigare^^.
Självklart går det ju att lösa med arv, polymorfism och dynamisk bindning osv me
Beror ju helt på behoven.
Ne..sovdags!

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Tänken är att du skall kunna komma åt alla värden via Enumen utan att behöva använda arv och skapa flera subklasser, en för varje typ. Så att du kan ha samtliga "typer" i en klass, lite som en samling konstanter fast smidigare^^.
Självklart går det ju att lösa med arv, polymorfism och dynamisk bindning osv me
Beror ju helt på behoven.
Ne..sovdags!

Tror att en enum bara kan hålla int-värden i C#

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Har du en klass som heter tex Boss.cs så kan du skapa en instans av den klassen, då får du ett objekt.
Gör du detta ifrån klassen där programmet kör, tex main.cs så kommer du ha tillgång till informationen i ditt Boss objekt
vad du kan göra med din Boss beror på hur Boss.cs ser ut, det är upp till dig

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem
Skrivet av FlawleX:

Hejsan!

Jag undrar om det finns ett sätt att hämta variablar och liknande från en annan .cs fil?

Låter lite som att du tror en .cs fil är desamma som en .txt fil.
En fil som ligger någonstans som man kan hämta information ifrån.
En .cs fil är en klass. Den används för att skapa ett objekt av den klassen
Har du en klass som heter Boss.cs så kan du tex skriva detta i din huvudklass (där programmet kör)

Boss minboss = new Boss();

du får då ett Boss objekt som heter "minboss"

Om vi antar att i din Boss.cs så har du definierat ett "Namn" attribut

Då kan du i din huvudklass skriva (Efter att du har skapat objektet, givetvis)

minboss.Namn

Hoppas det hälper

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem

En .cs-fil är inte en klass. Den kan innehålla en klass, en del av en klass (partial), ett flertal klasser, ett interface, en enum, en struct.. osv.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

En .cs-fil är inte en klass. Den kan innehålla en klass, en del av en klass (partial), ett flertal klasser, ett interface, en enum, en struct.. osv.

Alldeles riktigt. ber om ursäkt för det jag skrev, var för trött så hade lite tunnelseende på det hela

Skickades från m.sweclockers.com

Visa signatur

In order to understand recursion, one must first understand recursion