GeirGrusom Skrevet 30. august 2008 Forfatter Del Skrevet 30. august 2008 Det var litt vanskelig å holde seg happy, og kanskje litt lett å vinne i lotto Men et fint prosjekt! absolutt. Lenke til kommentar
GeirGrusom Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 (endret) Laget et program som pinger alle på nettverket (altså mellom 192.168.0.1 -> 192.168.0.255) Den bruker mange threads, så den er ferdig på rundt 10 sekunder. using System; using System.Net; using System.Net.Sockets; using System.Net.NetworkInformation; using System.Threading; namespace PingNet { static class PingNet { private static System.Threading.Thread[] m_threads; private volatile static int counter; static void Main(string[] args) { m_threads = new Thread[255]; // Exclude address 0 counter = 0; for (int i = 0; i < m_threads.Length; i++) { m_threads[i] = new Thread(new ParameterizedThreadStart(new ParameterizedThreadStart(PingAddress))); m_threads[i].Start(new IPAddress(new byte[] { 192, 168, 0, (byte)(i + 1) })); } while (counter < m_threads.Length) { Thread.Sleep(100); } } static void PingAddress(object parameter) { IPAddress address = parameter as IPAddress; Ping ping = new Ping(); PingReply reply = ping.Send(address, 10000); string hostname; if (reply.Status == IPStatus.Success) { try { hostname = "host " + Dns.GetHostEntry(reply.Address).HostName; } catch (SocketException) { hostname = "unknown host"; } Console.WriteLine("Found " + hostname + " at " + reply.Address.ToString()); } else { Console.WriteLine("Address " + address.ToString() + " " + reply.Status.ToString()); } counter++; } } } Brukte dette til å sjekke alle enheter som svarte på nettverket, fordi jeg hadde to maskiner som dukket opp i Windows Network. Endret 18. september 2008 av GeirGrusom Lenke til kommentar
steingrim Skrevet 18. september 2008 Del Skrevet 18. september 2008 kan man ikke bare pinge nettets broadcast-adresse? Lenke til kommentar
GeirGrusom Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 Kanskje... desverre, så dum som jeg var, prøvde jeg ikke... Men anyways, denne skaffer deg alle som svarerer innen ti sekunder. Lenke til kommentar
j000rn Skrevet 19. september 2008 Del Skrevet 19. september 2008 Hva med maskinene som ikke svarer på ping? Lenke til kommentar
GeirGrusom Skrevet 19. september 2008 Forfatter Del Skrevet 19. september 2008 Måtte de brenne i helvete! Lenke til kommentar
HDSoftware Skrevet 22. september 2008 Del Skrevet 22. september 2008 Hva med maskinene som ikke svarer på ping? De må svare PONG i stedet Lenke til kommentar
GeirGrusom Skrevet 2. oktober 2008 Forfatter Del Skrevet 2. oktober 2008 (endret) Vel, da har jeg laget noe som sikker kanskje er nyttig for noen En teksteditor med støtte for syntax highlighting. Mye mangler enda, blant annet undo/redo, men det meste som en vanlig teksteditor støtter er støttet av denne kontrollen. Måten den fungerer på er at teksten deles opp i linjer, og hver linje har en ekstra array som forklarer hvor teksten sin font eller farge skal endres. Områder som ikke er beskrevet av dette arrayet vil skrives som svart. En bruker kontrollen ved å enkelt nok plassere den på en form, og deretter ken en enten bruke RegularExpression feltet og skrive inn en regular expression som skal brukes for å matche syntaksen. Jeg buker /\\*(.*)\\*/|(//.*)|\"(.*)\"|'.'|[a-zA-Z_]([a-zA-Z0-9_]*)|0x[0-9A-Fa-f]+|([0-9]+\\.e-?[0-9]+)|0[0-7]+|[0-9]+ Til min D IDE som kanskje er noe en kan jobbe utifra dersom en skal bruke det til et annet C-ish språk En bruker Keywords arrayet for å si hvilke ord som skal fargelegges. Foreløpig har jeg ikke satt inn noen funksjon for å velge fargen selv, så dette må hardkodes nå. BuiltIn er funksjoner som skal fargelegges med en annen farge (jeg bruker det til spesielle ting som __FILE__ e.l. i D) En kan bruke LineAttributes for å sette forskjellige ikoner foran hver linje. Dette bruker jeg for at en debugger skal sette inn for eksempel breakpoint eller feilmelding og hvor programmet er kommet hvis en trykker på Ctrl+Break. En kan også få kontrollen til å understreke deler av teksten, for eksempel ved syntaksfeil e.l. Akkurat nå er det ganske enkelt kun en linje, og ikke sånn fin bølge, men det kommer. Dll-fila må kompileres før den kan brukes. edit: for å få denne til å fungere med andre språk, kreves det litt endring av kildekoden på syntax highlighting som dere kan se. Jeg har ikke funnet ut om det går an å gruppere ting i regex, så hvis noen vet hvordan hadde det vært fint CodeEditor.zip Endret 3. oktober 2008 av GeirGrusom Lenke til kommentar
GeirGrusom Skrevet 13. oktober 2008 Forfatter Del Skrevet 13. oktober 2008 Ingen som har vært borti dette i regex? hadde vært fint hvis en kunne sette i regex hva de forskjellige delene gjorde for noe... Lenke til kommentar
The Jackal Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Ingen som har vært borti dette i regex? hadde vært fint hvis en kunne sette i regex hva de forskjellige delene gjorde for noe... Du må forklare litt bedre hva du mener med gruppere. Du har muligheten til å navngi grupper ved å gjøre slik: Regex reg = new Regex("(?<first>abc)(?<second>def)"); Match match = reg.Match("abcdef"); Console.WriteLine(string.Format("{0}, {1}", match.Groups["first"].Value, match.Groups["second"].Value)); Vil da skrive ut: abc, def. Tror kanskje det ikke var dette du var ute etter? Lenke til kommentar
GeirGrusom Skrevet 14. oktober 2008 Forfatter Del Skrevet 14. oktober 2008 Jeg er ute etter at visse deler (for eksempel /* og */) av regexen skal kunne forklares direkte i regexen hva de er til. sånn det er nå, så sjekker programmet hva de forskjellige resultatene er til for å fargelegge koden (for eksempel Value.StartsWith("/*") e.l. Det hadde vært fint om jeg kan for eskempel skrive (<comment>//.*) så vil koden finne ut at denne matchen er en kommentar. Nå har det seg slik at jeg ikke får testet dette, da utviklingsmaskinen min har gått i vasken... men det ser ihvertfall logisk ut så takker Lenke til kommentar
The Jackal Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Du kan lese litt mer om det her. Spørsmålstegnet er forøvrig ingen quantifier i mitt eksempel, så det må være med hvis du skal bruke det. Lenke til kommentar
GeirGrusom Skrevet 16. november 2008 Forfatter Del Skrevet 16. november 2008 Hei Jeg lager for tiden en slags map editor, foreløpig har jeg bare konsentrert meg om terreng. Det jeg er interessert i er å vite hva slags ytelse dere får, siden denne bruker C# grafikkmotoren min (glorg) Andre som har testet det har fått problemer med at noe går kjempesakte. Fortelle gjerne hvilket OS dere har, og hva slags hardware. Og selvsagt feilmeldinger hvis dere får noen. Programmet er ganske enkelt i bruk, midterste museknapp roterer rundt brettet, scroll med hjulet zoomer inn og ut, begge museknappene flytter kameraet rundt. Venstre museknapp utfører valgt kommando(opphøy terreng eller myk ut) høyre museknapp senker terrenget. MapEditor.zip Lenke til kommentar
Techster Skrevet 20. november 2008 Del Skrevet 20. november 2008 Hei Jeg lager for tiden en slags map editor, foreløpig har jeg bare konsentrert meg om terreng. Det jeg er interessert i er å vite hva slags ytelse dere får, siden denne bruker C# grafikkmotoren min (glorg) Andre som har testet det har fått problemer med at noe går kjempesakte. Fortelle gjerne hvilket OS dere har, og hva slags hardware. Og selvsagt feilmeldinger hvis dere får noen. Programmet er ganske enkelt i bruk, midterste museknapp roterer rundt brettet, scroll med hjulet zoomer inn og ut, begge museknappene flytter kameraet rundt. Venstre museknapp utfører valgt kommando(opphøy terreng eller myk ut) høyre museknapp senker terrenget. Fin sak. Fungerer bra hos meg. Ingen delay. Vet ikke om brush setup skal fungerere med det gjør det ihvertfall ikke; det skjer ingenting når jeg klikker på den. Maskinen: XP SP 2. 2 GB RAM 2,40 GHZ CORE 2. NVIDIA Quadro FX560. Hva slags kunnskaper trenger man får å lage noe sånt? Kan du peke på noe litteratur? Fikk lyst til å prøve på noe "visualiseringsgreier" jeg har tenkt litt på. Lenke til kommentar
GeirGrusom Skrevet 20. november 2008 Forfatter Del Skrevet 20. november 2008 Det mest selvsagte er kunnskap om grunnleggende 3D grafikk. Jeg kan dessverre ikke anbefale noe litteratur, da jeg kun har brukt tutorials, wikipedia, msdn selv. Du bør begynne med å lese om matriser og vektorer i 3D grafikk, deretter er det egentlig bare å sette seg ned å prøve seg litt frem og lese tutorials. GameDev.net er et bra utganspunkt. Lenke til kommentar
hockey500 Skrevet 24. januar 2009 Del Skrevet 24. januar 2009 (endret) Etter at det var litt snakk om kalkulaturer her på C#-forumet, fikk jeg lyst til å prøve å lage min egen matteparser. Foreløpig er funksjonaliteten litt begrenset, men det viktigste er på plass, hvertfall mer eller mindre. blant funksjonene er alle standard operasjoner (+, -, *, /, %, ^, &, |, !), en del innebygde funksjoner samt støtte for definering av egne konstanter, variabler og funksjoner. har også laget enkel graf-tegning. hvordan det funker: for å regne ut vanlige uttrykk, er det bare å skrive i input-feltet nederst. F.eks. 2E^(cos(pi/6))%1/pi. definere variabler: bare skrive [variabelnavn] = [verdi]. definere konstanter (serialiseres til fil): define [navn] = [verdi] definere funksjoner (serialiseres også): for eksempel f(a,b)=a^2-b^2 har også såvidt lagt inn støtte for vektorer som foreløpig er på alpha-stadie og to funksjoner for å illustrere bruken av disse (angle og length). for eksempel "angle([1,0,0],[0,1,0])" returnerer pi/2. operator for kryssprodukt av vektorer (foreløpig kun tredimensjonale vektorer) er **. for eksempel vil (10/2)*[1,0,0]**[0,1,0] gi [0,0,5]. Oppdaterer denne posten når det blir ferdig. hmm, .rar ikke tillatt? math.zip Endret 24. januar 2009 av hockey500 Lenke til kommentar
Laserbeam Skrevet 21. februar 2009 Del Skrevet 21. februar 2009 (endret) Jeg har lagd et lite krypterings program, den kan ikke måle seg med de skikkelige krypterings programmene der ute da, men jeg ble ganske fornøyd selv Vennligst rapporter feil du kommer over. Endret 21. februar 2009 av Gnålern Lenke til kommentar
HDSoftware Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 (endret) Ser grei ut den, relativt enkelt å hække, men gjør jo en enkel jobb. Du kan jo ta en titt på denne koden som jeg skrev for et år eller to siden. Vil nok være hakket vanskeligere å knekke fordi den krever en nøkkel. Det brukes et par konstanter der men det overlater jeg deg til å skjønne selv ;-) public static class EncryptionClass { #region --< private Data >-- #endregion #region --< Public methods >-- public static string Encrypt(string pPassedString, string pPassword) { return Encryption(pPassedString, pPassword, Constants.Security.Crypto.CryptoType.Encrypt); } public static string Decrypt(string pPassedString, string pPassword) { return Encryption(pPassedString, pPassword, Constants.Security.Crypto.CryptoType.Decrypt); } #endregion #region --< Private Methods >-- private static string Encryption(string pPassedString, string pPassword, Constants.Security.Crypto.CryptoType pDirection) { int TestLen; int PassLen; int Checksum = 0; string WorkString = ""; switch (pDirection) { case Constants.Security.Crypto.CryptoType.Encrypt: Checksum = GetChecksum(pPassedString); WorkString = pPassedString; break; case Constants.Security.Crypto.CryptoType.Decrypt: Checksum = int.Parse(pPassedString.Substring((int)Constants.Security.Crypto.CRCPosition, (int)Constants.Security.Crypto.CRCLength)); // Must remove the Checksum from the Encryption string WorkString = pPassedString.Substring(0, (int)Constants.Security.Crypto.CRCPosition) + pPassedString.Substring((int)Constants.Security.Crypto.CRCPosition + (int)Constants.Security.Crypto.CRCLength); break; } //pPassword = MaskPassword(pPassword); TestLen = WorkString.Length; PassLen = pPassword.Length; int i = 0; char[] tmpWorkString = WorkString.ToCharArray(); for (int o = 0; o < TestLen; o++) { byte num1 = (byte)tmpWorkString[o]; byte num2 = (byte)pPassword[i]; byte xored = (byte)(num1 ^ num2); char Temp = (char)xored; tmpWorkString[o] = Temp; i++; if (i >= PassLen) i = 0; } WorkString = new string(tmpWorkString); if (pDirection == Constants.Security.Crypto.CryptoType.Encrypt) WorkString = WorkString.Substring(0, (int)Constants.Security.Crypto.CRCPosition) + Tools.StringTools.PadValue(Checksum, 2, '0') + WorkString.Substring((int)Constants.Security.Crypto.CRCPosition); else if (Checksum != GetChecksum(WorkString)) { WorkString = Constants.Security.Crypto.DecryptError; } return WorkString; } private static int GetChecksum(string pPassedString) { int Checksum = 0; for (int i = 0; i < pPassedString.Length; i++) Checksum += (int)pPassedString[i]; if (Checksum >= Math.Pow(10, (double)Constants.Security.Crypto.CRCLength)) do { pPassedString = Checksum.ToString(); Checksum = 0; for (int i = 0; i < pPassedString.Length; i++ ) Checksum += int.Parse(pPassedString[i].ToString()); } while (Checksum >= Math.Pow(10, Constants.Security.Crypto.CRCLength)); return Checksum; } #endregion } edit: Ser at jeg bruker en Tools klasse der også, men det er bare for å få til padding. Det kan dere fikse selv ;-) Endret 23. februar 2009 av HDSoftware Lenke til kommentar
GeirGrusom Skrevet 27. februar 2009 Forfatter Del Skrevet 27. februar 2009 Laget et lite program for å lese og skrive .ini filer med som jeg tenkte kanskje noen andre kunne ha bruk for. Det som kan være greit med den, er at den bevarer alle kommentarer og slikt, fordi den kun skriver over alle feltene, og ikke hele fila. Den er temmelig enkel i bruk, dersom en referer til en header som ikke finnes i den originale fila, så blir den laget, samme med verdiene. Eksempel på bruk: IniFile ini = new IniFile("config.ini"); ini["General"]["ShowFullPaths"] = "true"; Filen lagres når Save blir kalt. Filen forblir låst så lenge objektet eksisterer eller hvis Dispose blir kalt. Eksplisitte kommentarer skrives ved at linjen starter med ; Det finnes ingen syntaks sjekking, så dersom en linje ikke lar seg parse, blir den bare ignorert. Så ;ShowFullPaths=true Vil bli ignorert av parseren, men dette gjelder KUN når ; står på begynnelsen av linjen, alle kommentarer må enten stå over eller under hver linje. "Hei jeg heter brødrister" Blir også ignorert. IniFile.zip Lenke til kommentar
Velena Skrevet 1. mars 2009 Del Skrevet 1. mars 2009 (endret) Laget tidligere i uken en klasse som skal gjøre det enklere å håndtere sprites,og tenkte jeg skulle legge den her for å få kommentarer på den. Koden er min, i motsetning til ideen som jeg fikk av en bruker på et annet forum. class Spritesheet { #region Variables private Bitmap sheet; private Dictionary<string, Rectangle> sprites = new Dictionary<string, Rectangle>(); private string filepath; #endregion #region Constructor public Spritesheet(string path) { try { sheet = new Bitmap(path); filepath = path; } catch { } } #endregion #region Properties public string Filepath { get { return filepath; } } public Bitmap Sheet { get { return sheet; } set { sheet = value; } } public Dictionary<string, Rectangle> Sprites { get { return sprites; } set { sprites = value; } } #endregion #region Methods /// <summary> /// Saves the current spritesheet data, including the spritesheet image. /// </summary> /// <param name="path">The path to save the spritesheet to, including the image name.(+1 Overload)</param> /// <returns>Returns true if successfull, otherwise false.</returns> public bool Save(string path) { try { StringBuilder dataFile = new StringBuilder(); foreach (string key in sprites.Keys) dataFile.AppendLine("!" + key + "!" + sprites[key].ToString()); using (TextWriter fileWriter = new StreamWriter(path + ".txt")) fileWriter.Write(dataFile); sheet.Save(path); } catch { return false; } return true; } /// <summary> /// Saves the current spritesheet data. (+1 Overload) /// </summary> /// <returns>Returns true if successfull, otherwise false.</returns> public bool Save() { StringBuilder dataFile = new StringBuilder(); foreach (string key in sprites.Keys) dataFile.AppendLine("!" + key + "!"+sprites[key].ToString()); using (TextWriter fileWriter = new StreamWriter(filepath + ".txt")) fileWriter.Write(dataFile); return true; } /// <summary> /// Loads the spritesheet data that belongs to the image. /// </summary> /// <returns>Returns true if the data was loaded successfully, otherwise false.</returns> public bool Load() { if (File.Exists(filepath + ".txt")) { using (TextReader fileReader = new StreamReader(filepath + ".txt")) { try { while (fileReader.Peek() >= 0) { string line = fileReader.ReadLine(); MatchCollection valueMatches = Regex.Matches(line, @"(?<==)\d+"); int x = int.Parse(valueMatches[0].Value); int y = int.Parse(valueMatches[1].Value); int width = int.Parse(valueMatches[2].Value); int height = int.Parse(valueMatches[3].Value); sprites[Regex.Match(line, @"(?<=!)\w+(?=!)").Value] = new Rectangle(x, y, width, height); } } catch { return false; } } return true; } else return false; } #endregion } Det denne klassen skal hjelpe med, er å gjøre det enklere å referere til en enkelt sprite på en spritesheet, slik at du ikke behøver å tulle med koordinater når du koder. Istedet gjør du slik: Spritesheet spritesheet = new Spritesheet("C:\MinFilvei\Eksempel.jpg"); spritesheet.Load(); Bitmap angrepsSprite1 = new Bitmap(spritesheet.Sprites["Angrep1"].Width, spritesheet.Sprites["Angrep1"].Height); Graphics spriteGraphics = graphics.FromImage(angrepsSprite1); spriteGraphics.DrawImage(spritesheet.Sheet, new Rectangle(0,0,angrepsSprite1.Width,angrepsSprite1.Height),spritesheet.Sprites["Angrep1"],GraphicsUnit.Pixel); Dette forutsetter selvsagt at du har laget en spritesheet fil med "Angrep1" definert. Jeg legger ved et program som gjør dette enkelt, kun ved å bruke denne klassen(Gjør den om fra .txt til .exe før du kjører den). Håper på kommentarer på dette =). Spritesheet_management.txt Endret 10. mars 2009 av Velena Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå