Permalänk

Simulatorspel

Min tanke är att göra ett simulatorspel där man ska agera manager för ett hockeylag. Likt "Championship manager X", "NHL Eastside manager".. Fast webbaserat, likt Livehockey och HockeyArena.

Jag har insett att detta är ett jätteprojekt, men jag skulle vilja ha lite råd och tips om hur jag ska gå tillväga för att göra detta.

Min första fråga är vilka programmeringsspråk jag ska använda för de olika delarna:
* Vilket språk ska jag använda för själva simulatormotorn? ex. C#, VB, C++?
* Vilket språk ska jag använda för att skapa websidan? Som har en smidig integration tillsammans med det valda språket för simulatormotorn? HTML och CSS med PHP, ASP?

Vidare, vilken databas ska jag använda för att lagra all information som jag kommer få?
* Vilken databas som sagt? mySQL, MS SQL Express?

Ett par punkter som jag kollat lite snabbt om det finns klara freeware är bland annat:
* Namngenerator för svenska namn (helst från flera olika länder) eller måste jag betala för att få tag på en fungerande?
* Hur ska jag göra med alla simuleringar? Jag menar hur ska jag hantera alla random-tal? Med hjälp av programmeringens random-funktioner eller ska jag använda mig utav sidor som www.random.org?

Uppskattar all hjälp!

Johan

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk
Medlem

Du ska inte satsa på något lite mindre projekt och där smaka av vilka tekniker du tycker bäst om? Bygg en lådbil innan du bygger ett flygplan typ.

Permalänk

Nja, alltså...
Programmeringsspråk som programmeringsspråk.. Jag har fördelen att jag förstår saker och ting, ganska snabbt. har gjort tillräckligt med småprojekt inom programmering för att förstå vad som är möjligt och inte.

Det jag vill ha hjälp med är bara rekommendationer åt vilket håll jag ska gå åt för att det ska bli så optimalt som möjligt:)

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Vad är syftet med siten? Gör du den för att den ska bli stor eller för att det är kul? Managerzone.com har exakt det du beskriver, dem lär du aldrig slå ut. Tycker som andra att du bör börja mindre. Kan du inte på egen hand besluta vilket språk du bör skriva i innebär det antagligen att du inte kan nåt språk bra. Det i sintur gör det här projektet ör stort för dig. Lär dig ett språk ordentligt, lär dig skillnaderna mellan dem och börja sen.

C# är ett språk som är lätt att börja med och lätt att få resultat i(finns iofs massor som är). Börja skriv och lär dig innan!

Har du inte den kunskapen som krävs när du börjar kommer koden att snabbt bli ostruktuerad och omöjlig att underhålla. För att slippa skriva om den kan det vara en bra ide att kunna från början!

Vill du fortfarande så kan jag gärna stå till tjänst, säg bara till!

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Det finns massa bra exempel på simulatorsspel, och mitt syfte är inte att slå ut dessa enormt stora sajter. Utan mest för en kul grej, öka mina programmeringskunskaper och göra ett lite mer avancerat spel än de som finns ute, som managerzone och lite mer verklighetsbaserat.

Jag har programmerat VB en hel del på senaste, men har gått kurser i C# så jag har det i bakhuvudet någonstans.

Jag vet att det är högt jag siktar. Men jag tar emot all hjälp jag kan få.

Kanske bättre att jag PM:ar med dig?

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk
Citat:

Ursprungligen inskrivet av jokohanho
Det finns massa bra exempel på simulatorsspel, och mitt syfte är inte att slå ut dessa enormt stora sajter. Utan mest för en kul grej, öka mina programmeringskunskaper och göra ett lite mer avancerat spel än de som finns ute, som managerzone och lite mer verklighetsbaserat.

Jag har programmerat VB en hel del på senaste, men har gått kurser i C# så jag har det i bakhuvudet någonstans.

Jag vet att det är högt jag siktar. Men jag tar emot all hjälp jag kan få.

Kanske bättre att jag PM:ar med dig?

Vi kan ta diskussionen här, det är ju ändå det tråden handlar om. Då kan också de andra som känner att de har en åsikt hoppa in.

Frågan är hur mycket du kan om .net? Det svåra, som någon nämnde i en annan tråd, med t.ex. php, java eller c# är inte syntaxen utan att kunna hela framworket.

Jag skulle personligen välja C# om jag var du. Det är ett väldigt väldokumenterat och heltäckande framework, samt du har redan tänket. Det finns ett syfte i att ha samma språk för den som simulerar matcherna och för själva serverdelen av sidan. C# klarar både, det gör dock t.ex. java också. Kör du C# finns det även en bra koppling mot MSSQL som du kan använda dig av för att köra databasqueries.

Vill du ha mer prestanda bör du kanske sikta på c++ för simuleringen men antar att du inte har så stora prestandakrav.

Du måste tänka ut din design långt i förväg... Nu snackar jag inte design på hemsidan, utan design på koden. Hur ska du lägga upp det? Vilka patterns ska du använda t.ex.? Ett par webcasts som jag har funnit till stor nytta i detta, även om de inte är 100% korrekta är asp.net MVC Storefront Starter kit:
http://www.asp.net/learn/mvc-videos/#MVCStorefrontStarterKit

Om du inte lägger upp designen korrekt från början kommer du snart sitta med kod som inte går att hantera. Tänk hela tiden igenom det du gör. Vad händer om jag i framtiden vill ändra detta? Vad händer om användaren gör såhär? Vad händer om jag vill lägga till den här funktionaliteten? Vad händer när jag har skrivit 100 gånger mer kod? Försök skriva så generiskt som möjligt så att du kan återanvända din kod...

Simuleringarna kan du använda dig av de random-funktioner som finns i språket. Det bör såklart inte vara helt random utan ett bättre lag måste fler än 50% av gångerna slå ett uselt lag. Där kommer du att ha ett helvete med all logik som ska in, så där är det extra viktigt med en genomtänkt kod innan.

Ska du välja C# kan jag varmt rekommendera ASP.NET MVC för websidan. Det är ett bra sätt att skriva lätthanterliga hemsidor samt ett otroligt bra sätt att separera kod och design.

En bra idé kan även vara att skriva unit tests. Då kan du lätt märka ifall något i koden går sönder i framtiden och hitta det direkt. Samt att du kan testa din kod utan att starta appen...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Jag skulle ha satsat på C#, ASP.Net och MS SQL (Express)...

Börja bygg nånting så att du får en grund. När det gäller dina frågor om namngenerator och att slumpa tal så är ju det småfrågor i sammanhanget. Börja skissa på en databas, gör en skiss över vilka funktioner du ska ha osv osv..

Att slumpa tal är väldigt lätt. När det gäller namnen, om du inte hittar nåt färdigt (jag har inte hört talas om nåt sånt) är det ju lätt att lägga in en massa svenska namn i en lista (databas, xml el. liknande) och bara slumpa fram olika kombinationer.. du kan ju även lägga till olika ord som tillsammans kan bli efternamn.. ex, sten + ros = stenros, berg + sten = bergsten osv... nu hade jag väldigt dålig fantasi så namnen blev kanske inte dom roligaste..

Edit, KurreKula hann före mig och gav ett bättre svar på ungefär det jag försökte förmedla..

Visa signatur

EPoX 8RDA+, XP2500+, 2x256Mb PC3200 (DualCh), Club3D 9800PRO, Seagate 7200.7 160Gb 8Mb Limited edition

Permalänk

Tack så mycket för era svar...

Jo, jag är mycket medveten om att förarbetet är väldigt viktigt. Som jag kommer lägga stor tid åt.

Härligt, då får jag lära mig nya saker.. Är mer van vid PHP och mySQL. De webbdesign kunskaperna jag har. Har jag fått genom WAMP

Men det ska inte vara några problem, det är ju samma sak. Gäller bara att vänja sig vid alla nya syntaxer osv. Precis som du beskriver KurreKula, så måste jag sätta mig och lära mig det!

Jovisst.. Namngeneratorn går att göra själv, tänkte faktiskt inte på att dela upp namnen på de vis du beskrev. Bara förnamn slumpat med efternamn, så det var ett gott råd tillsvidare, tack! Men att komma på massa med namn är väl kanske inte det man helst vill lägga tid på. Blir ju inte kul sen när utländska namn möjligtvis ska komma med, som ryska och polska namn osv

Jag återkommer när jag börja stöta på problem när jag gör min skiss över hur jag vill ha det. Ska ha mitt första möte med min morbror imorgon för att inleda projektet. Men jag kommer stå ensam som programmerare som det ser ut nu :/

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Det var ett tag sedan jag arbetade i C# nu.
Så ifall ni vet någon bra tutorial så jag kan komma igång lite kvickt skulle uppskattas !

Jag har klart för mig att jag måste skissa upp allt på papper innan jag börja bygga på min simulator samt databas.
Men finns det något jag bör tänka på, mer än att dokumentera väl och kommentera alla rader kod jag gör. Kanske något att förbereda C# koden för att lägga in den till databas/webbgränssnittet på något vis?
Några fallgropar som är vanligt att trilla ner i? Som en "nybörjare" som mig? har ju aldrig gjort något större projekt så strukturen har aldrig varit överdrivet viktig (just därför jag vill ta detta kliv upp i min programmerings-stege).

Tackar!

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Nu har jag kommit igång med C# något... Inte på projektet utan bara grunderna och lite funderingar över hur jag ska strukturera upp allt.
Jag har läst om Class och Object orientering och hur man använder sig av "constructors".
Istället för att använda Visual Studio från början har jag kompilerat mina koder genom att göra allt själv, kände att jag behövde lära mig hur allt funkar från grunden och inte bara se allt grafiskt.

Som sagt, har ni några bra tutorials så är ni välkomna och linka dem, för både MS SQL (Express) 2008 och ASP.NET. Har ni några avancerade tutorials för C# är ni även där välkomna och linka!
Gärna någon bra tutorial om hur man ska strukturera upp allt, tips och trix för att hålla reda på sin kod på bästa sätt.

För jag har bestämt mig för att börja kolla på fördelarna och nackdelarna med dessa alternativ. Jämfört med PHP/mySQL.

C# är spikat i alla fall att jag ska köra för själva simulatorn. Även om C++ verka intressant.

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk
Medlem
Visa signatur

EPoX 8RDA+, XP2500+, 2x256Mb PC3200 (DualCh), Club3D 9800PRO, Seagate 7200.7 160Gb 8Mb Limited edition

Permalänk

Jag sitter just nu och klura lite på hur jag ska göra namngeneratorn.

Jag har åkt fast på hur jag ska utnyttja en Array med namn på bästa sätt tillsammans med C#.

Det finns lite olika sätt att göra arrays på givetvis. De jag testat är följande:

Ex 1.
string[] FirstNameArray = new string[3];
FirstNameArray[0] = "Adam";
FirstNameArray[1] = "Klas";
FirstNameArray[2] = "Patrik";

Random rnd = new Random();
RandomValue = rnd.Next(0, 2);

Console.WriteLine(FirstNameArray[RandomValue]);

Ex 2.
ArrayList FirstNameArray = new ArrayList();
FirstNameArray.Add("Adam");
FirstNameArray.Add("Klas");
FirstNameArray.Add("Patrik");
string TotalNames = FirstNameArray.Count;
string[] sFirstNameArray = FirstNameArray.ToArray(typeof(string)) as string[];

Random rnd = new Random();
RandomValue = rnd.Next(0, 2);

Console.WriteLine(sFirstNameArray[RandomValue]);

Ex 1 är ganska så dåligt pga om man vill lägga till namn mitt i (ifall man vill sortera namnen i alfabetisk ordning).

Ex 2 är bra då man kan fylla på mitt i (ifall man vill sortera namnen i alfabetisk ordning).

Min tanke är den att jag vill ha ArrayList:an FirstNameArray som en public class eller något liknande och lägga denna lista i en egen ddl-fil eller liknande för access för alla.
Alltså det jag vill är att endast ha med skapandet av ArrayList:an och alla namn som skall ligga i den med hjälp av ".Add".
Har fastnat totalt här, någon som kan hjälpa mig att "tänka rätt" här.. Förklara gärna hur du tänker, vill lära mig att optimera och minimera raderna kod så mycket som möjligt.

Saken är den att jag vill komma åt denna lista när jag både gör förnamnet och efternamnet. För i efternamnet ska jag kunna plocka ett namn i Förnamnslistan och lägga till sson i slutet (och trimma bort s om förnamnet slutar med s, så det inte blir tre s på rad).

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Det exakta problemen är följande kod:

using System;
using System.Collections;

public class TestArray
{
public string Namn;
public TestArray()
{
ArrayList List = new ArrayList();
List.Add("Johan");
List.Add("Magnus");
List.Add("Adrian");
int ListCount = List.Count;
Random rndName = new Random();
int RndNumber = rndName.Next(0,ListCount);
string[] sList = List.ToArray(typeof(string)) as string[];
Namn = sList[RndNumber];
}
}

class Gogo
{
public static void Main()
{

TestArray Test = new TestArray();
string Name = Test.Namn;
TestArray Test2 = new TestArray();
string Name2 = Test2.Namn;

Console.WriteLine(Name);
Console.WriteLine(Name2);

}
}

Problemet är att jag får samma värde när jag skapar en ny TestArray.
Output blir alltid det samma på Name och Name2.

Jag antar att det har något med random att göra, att jag alltid får samma tal, är det problem som detta som uppstår om man inte använder Random True Form?

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

OJoj, för det första:

string TotalNames = FirstNameArray.Count;

... Count är en integer, du måste använda tostring för det där. Det bör du dock inte, det finns ingen anledning att spara det i en variabel.

List är inget bra variabelnamn då det är en klass.

Det är faktiskt den klasen du bör använda...
Testa nåt sånt här(ej testkört koden, kanske inte ens kompilerar):

List<string> firstNames = new List<string>{"Johan", "Karl", "Simon"}; firstNames.Add("Kurt"); List<string> lastNames = new List<string>{"Körberg", "Lundkvist", "Westin"}; lastNames.Add("Stenqvist"); Random rnd = new Random(); string name; bool lastNameEndsWithSon = rnd.Next(0,1) == 0; string firstName = firstNames(rnd.Next(0, firstNames.Count-1)); string lastName = lastNames(rnd.Next(0, lastNames.Count-1)); if(lastNameEndsWithSon) { name = string.format("{0} {1}son", firstName, lastName.EndsWith("s") ? lastName : lastName + "s"); } else { name = firstName + lastName; }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Istället för att hitta på och skriva in namnen manuellt skulle jag valt att klippa'o'klistra namn från http://www.svenskanamn.se/ (se längst ned på sidan under "Vanligaste namnen i Sverige", där har du 159,555 kvinnonamn, 132,704 mansnamn och 149,049 efternamn) , förnamn i en textfil och efternamn i en annan, och börja därifrån istället.

Permalänk
Citat:

Ursprungligen inskrivet av fqvarfort
Istället för att hitta på och skriva in namnen manuellt skulle jag valt att klippa'o'klistra namn från http://www.svenskanamn.se/ (se längst ned på sidan under "Vanligaste namnen i Sverige", där har du 159,555 kvinnonamn, 132,704 mansnamn och 149,049 efternamn) , förnamn i en textfil och efternamn i en annan, och börja därifrån istället.

Ingen har ju dock sagt att man ska skriva in det manuellt? Inte det som diskuteras, även om det är en bra ide att ta namnen därifrån. Det är också mycket bättre att ha namnen i en riktig databas om vi nu diskuterar det...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Precis som KurreKula säger så är det en lista du ska använda dig av!

Visa signatur

EPoX 8RDA+, XP2500+, 2x256Mb PC3200 (DualCh), Club3D 9800PRO, Seagate 7200.7 160Gb 8Mb Limited edition

Permalänk

Nu har jag kommit en bit på vägen, jag lekt lite med MS SQL 2008 Express + C#.

Går det att optimera "tanken" något ytterligare än det jag redan åstakommit:

Applikation Namngenerator

Databasen
Jag har skapat tre tabeller för min test.
1. player
2. firstnames
3. lastnames

player
Har skapat fyra kolumner.
1. ID (1,1) Primary Key
2. firstname varchar(50)
3. lastname varchar(50)
4. age int

firstnames
Har skapat två kolumner.
1. ID (1,1) Primary Key
2. firstname varchar(50) UNIQUE

lastnames
Har skapat två kolumner.
1. ID (1,1) Primary Key
2. lastname varchar(50) UNIQUE

C#-koden
Jag hämtar ut alla firstname från firstnames till en List<string>, likså gör jag med lastname från lastnames.
Då kan jag enkelt göra en random mot dessa två listor och få ut ett förnamn och ett efternamn. Har även gjort en feature där jag gör en boolrandom ifall efternamnet ska vara ett namn som slutar på sson (ex svensson) eller inte. ifall det är sson gör den en random mot firstname listan och sätter dit sson i slutet (och kollar efter ifall förnamnet har som sista bokstav s, isf plockar bort denna), annars gör den en random mot lastname listan.

Anledningen att jag lägger allt i en LIST är att undvika problem då ID från databasen är opålitlig pga om man plockar bort en rad så blir det ett mellanrum där på ID, ex.. Jag har 10 namn. med ID från 1-10. Sedan plockar jag bort raden som har ID 5. Gör jag sedan en random här emot och lyckas få 5, blir strängen null.

Som den sist nämnda "anledningen" vill jag gärna ha fler tips att tänka på vid strukturbyggnaden av både kod och databas, och även tips som att sätta en UNIQUE på firstname i firstnames-tabellen för att undvika dubbletter.

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Tror att det är mer prestandaeffektivt att slumpa när du hämtar ut från databasen. Det minskar mängden data som databasen måste ta ut.

Du bör kanske ha en klass Player som har vissa värden? Så har du en lista av player istället.

Använder du dig av den koden jag skrev för att ta fram sson etc?

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

När jag testade att slumpa direkt mot databasen fick jag alltid samma slumptal.. även fast jag hade två olika randoms skapade.
Så i sson exemplet fick jag alltid Johan Johansson, Kalle Kallesson osv.

Har du några tips på hur jag gör detta? Jag är medveten om att jag måste först göra en "check" ifall randomnummret jag fått fram matchar ett ID i databasen (annars blir det ju som sagt null), ifall det inte existerar måste en ny random göras.

För att minimera raderna kod använde jag mig utav din bool-sats.
Resten gjorde jag om lite, för ditt exempel funkade inte och jag förstod inte riktigt vad allt skulle användas till så istället blev det:

Citat:

public string GenerateLastName(List<string> x, List<string> y)
{
Random rnd = new Random();
Random rndtype = new Random();
string lastname;

bool LastNameEndsWithSon = rndtype.Next(0,2) == 0;
if(LastNameEndsWithSon)
{
lastname = x[rnd.Next(0,x.Count)];
char LastChar = lastname[lastname.Length-1];
LastChar = char.ToUpper(LastChar);
if (LastChar == 'S')
{
lastname = lastname.Remove(lastname.Length - 1, 1);
}
lastname = lastname + "sson";
}
else
{
lastname = y[rnd.Next(0,y.Count)];
}
return lastname;
}

Där x och y representerar FirstNameList och LastNameList.

Du bör kanske ha en klass Player som har vissa värden? Så har du en lista av player istället.

Vad menar du med detta? Du menar för att gå vidare med spelarens egenskaper? I så fall så vill jag inte gå in på sådana detaljer än, vill göra en del klar i min testmiljö för att få en grund att stå på, som jag kan ha som referens när jag går vidare

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Funkade ju visst?

string firstName = "Oskar"; string lastName = "STen"; string name = string.Format("{0} {1}son", firstName, lastName.EndsWith("s") ? lastName : lastName + "s");

Det blir även rätt om lastname är "Stens"....

Hmm, det där kanske funkar i det här läget... Men du bör ha en klass för Player i slutändan där du sparar alla värden som "Name", "Age" etc etc....

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Citat:

string firstName = firstNames(rnd.Next(0, firstNames.Count-1));
string lastName = lastNames(rnd.Next(0, lastNames.Count-1));

Där hade vi felet, det ska vara med [] istället för ():

Citat:

string firstName = firstNames[rnd.Next(0, firstNames.Count-1)];
string lastName = lastNames[rnd.Next(0, lastNames.Count-1)];

Jag har en liten fråga med denna sträng :

Citat:

string name = string.Format("{0} {1}son", firstName, lastName.EndsWith("s") ? lastName : lastName + "s");

Vad gör denna raden? Kan inte utesluta vilken syntax som raderar s

Skulle gärna vilja lära mig att minimera min kod på detta vis, för jämför man denna så är det stor skillnad med antalet rader, jämtemot min. ^^

Jo, en class för Player ska jag göra
Har dock inte börjat strukturera upp det fullt ut ännu. Är i stadiet där jag lär mig c# och vilka lösningar som finns, ju större grund jag har här, ju snabbare kommer ju felsökning bli

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Kan du string.Format?

Den gör sätter ihop strängar och byter ut "{0}" mot den motsvarande positionen i parameterarna efter...

Det den gör att är den tar Förnamn plus efternamn och lägger till "son" efter. Men det skulle kunna ge "hejson", vilket borde vara "Hejsson". Därför kommer vi till nästa bit:

string fullLastName = lastName.EndsWith("s") ? lastName : lastName + "s";

Det innan "?" i början ska alltid vara en boolean. Om det är true kommer det att ta det som är direkt efter, annars tar den det som är efter : vilket är samma sagt fast plus ett "s"... Det kan vara en bra idé att skriva:

string fullLastName = lastName.ToLower().EndsWith("s") ? lastName : lastName + "s";

för annars skulle det bli fel om det var "HejS"

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Nej, jag har försökt förstå logiken, utan att läsa hur den egentligen funkar. string.format alltså.

Nu börjar det klarna lite.

lastName.EndsWith("s") ? lastName : lastName + "s");

Alltså:

if (lastName.EndsWith("s") = TRUE)
{
lastName = lastName;
}
else if (lastName.EndsWith("s") = FALSE)
{
lastName = lastName + "s";
}

Om man översätter det till en if-sats?

Lite mindre rader, suveränt!

Finns det mer att lära sig om string.format som är nödvändigt? Har undvikit att använda den varje gång jag stött på den.

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Precis, det är exakt samma sak fast mycket kortare

Det senaste har ju inget med string.Format att göra...

En viktig sak att tänka på när du sätter ihop strängar är att tänka på att om det är ett okänt antal strängar som ska ihop från början, använd StringBuilder! Ska göra ett känt, större antal strängar ihop till en : använd string.Format! Den använder en stringbuilder i bakgrunden.

Du kan använda vanlig sträng plus sträng för färre strängar.

Anledningen är att om du plusar ihop strängar kommer den hela tiden att allokera om utrymmet i minnet för varje sträng. Men StringBuilder och string.Format tar i akt att det kommer att krävas mer och allokerar mer minne från början och måste därför inte omallokera vilket är snabbare...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

string.format är vad som följer antar jag:

Citat:

string.Format("{0} {1}", parameter1,parameter2)

Tack för hjälpen, är tacksam för all input som jag kan få!

Som sagt, det är en mardröms-projekt som jag har inlett. haha.

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av KurreKula
En viktig sak att tänka på när du sätter ihop strängar är att tänka på att om det är ett okänt antal strängar som ska ihop från början, använd StringBuilder! Ska göra ett känt, större antal strängar ihop till en : använd string.Format! Den använder en stringbuilder i bakgrunden.

Du kan använda vanlig sträng plus sträng för färre strängar.

Anledningen är att om du plusar ihop strängar kommer den hela tiden att allokera om utrymmet i minnet för varje sträng. Men StringBuilder och string.Format tar i akt att det kommer att krävas mer och allokerar mer minne från början och måste därför inte omallokera vilket är snabbare...

Vill bara göra ett förtydligande, är inte riktigt säker på hur det är i C#, men i Java brukar man göra på det här sättet i loopar när man för varje varv i loopen ska appenda på en sträng. Det kan förbättra prestandan väldigt mycket om det är långa och många strängar du ska appenda på, så ta det som en good practice att alltid använda detta när man loopar och ska appenda på en sträng.

Permalänk
Citat:

Ursprungligen inskrivet av jokohanho
string.format är vad som följer antar jag:

Tack för hjälpen, är tacksam för all input som jag kan få!

Som sagt, det är en mardröms-projekt som jag har inlett. haha.

Japp, det stämmer bra det..

Citat:

Ursprungligen inskrivet av Wishie
Vill bara göra ett förtydligande, är inte riktigt säker på hur det är i C#, men i Java brukar man göra på det här sättet i loopar när man för varje varv i loopen ska appenda på en sträng. Det kan förbättra prestandan väldigt mycket om det är långa och många strängar du ska appenda på, så ta det som en good practice att alltid använda detta när man loopar och ska appenda på en sträng.

Bra förtydligande av det jag sa Är så i C# med

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Just det ja, du svarade aldrig på min fråga angående hur jag ska slumpa fram mina namn från databasen. Du nämnde att jag skulle ta en slumptal och jämföra med databasen direkt. Men detta blir krångligt tror jag.

Visst jag kan ta reda på många rader det finns i databasen med sqldatareader. men jag kan inte veta säkert att antalet rader matchar ID-kolumnen.
Låt oss säga att jag får reda på att det finns 100 namn, alltså 100 rader. Medan jag har raderat två namn som jag inte vill ha, alltså har namn 100, ID:et 102. Detta blir fel i min random rnd.next(1,databasreader.count) (nu vet jag inte exakta syntaxer i huvudet hur man tog fram antalet rader, men för pincipens skull). Därför valde jag att lägga över alla namn i en lista, där jag skapar en pålitlig indexering av alla namn som jag därefter kan slumpa i

Men ge mig förslag på hur jag ska göra det bättre så testar jag givetvis det...

Visa signatur

CHASSI Antec900 v1 || MB Asus P5Q Pro || GPU Sapphire ATI Radeon HD 6870 Vapor-X || RAM 2x Corsair Dominator 2GB 1066MHz DDR2 || PSU Corsair TX 650w || CPU Intel Quad Core Q9550 2.84GHz || HDD Corsair SSD Force Series™ GT 120GB + Western Digital Caviar® Green™ 1TB || OS Windows 7 x64

Permalänk

Använder du LINQ to SQL? Isåfall kan du göra det enkelt.. Har du LINQ?

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase