Ergebnis 1 bis 15 von 15
-
Bin hier zuhause
- 20.05.2010, 10:12
- #1
Guten Tag liebe Comunity.
Ich habe eine Frage bezüglich c#:
Ich möchte ein Rätsel für WM entwickeln http://de.puzzle-nonograms.com/?size=2
Dazu benötige ich 15x15 Felder (Von A1 - O15) welche sich wie in dem link verhalten sollen
Mit welcher Form arbeite ich hier am besten? Manuell die 225Buttons zu setzen wäre wohl schwachsinnig.. oder?
Das dürfte doch grundsätzlich nicht so schwer sein^^
Kann mir wer helfen?
Danke
GreeZ $me
-
entwickelt Apps
- 20.05.2010, 18:49
- #2
Aus Performancegründen keine Buttons, sondern selber zeichnen (GDI, OpenGL, D3D). Ich würde OpenGL (OpenGL ES 1.x Tutorial) einsetzen, da man damit auch noch coole Animationen erstellen könnte. (abgesehen davon kann/soll die Spiellogik und die Visualisierung getrennt sein, so dass man das 'einfach' umschalten kann)
Kannst ja auch mal in die Sourcen von klovierb's Sudoku schauen, wie er das implementiert hat. (habe nicht nachgeschaut)
-
Bin hier zuhause
- 21.05.2010, 08:59
- #3
"Für Geräte, die OpenGLES 2.0 unterstützen muss der dll Name in der Klasse egl.cs und gl.cs geändert werden.
in beiden Klassen auf libGLESv1.dll
oder
egl.cs libEgl.dll
gl.cs libGLESv1.dll
Vielleicht kann jemand mit einem solchen Gerät bestätigen, dass die Namen geändert werden"
Funktioniert das? hab irgendwie im Thema ein bisschen den überblick verloren xD
Und kann man das Tutorial anschaun im SharpDevelop.. ich krieg n fehler wenn ichs öffne...
-
entwickelt Apps
- 22.05.2010, 13:27
- #4
Ja, es funktioniert. (auf dem HD2 hat man mit OpenGLES2 noch mehr Möglichkeiten test opengles2)
Was genau ist die Fehlermeldung im SharpDevelop?
-
Bin hier zuhause
- 27.05.2010, 12:07
- #5
Sry.. habs erst jetzt gesehn..
Ehm ich benütze ab jetzt Visual Studio 2008
aber ich bin wirklich erst neu auf dem gebiet... ich frag mich nur gerade wie ich richtig anfangen soll.. ich bin kein mensch der ein buch nimmt und liest.. so habe ich auch nicht gelernt PHP etc. zu programmieren..
Nach was für Tutorials soll ich suchen? OpenGLES2 oder c# um das obige Projekt zu realisieren?
-
entwickelt Apps
- 29.05.2010, 17:22
- #6
Starte mal mit C# und überlege Dir ein Framework.
Man könnte bereits die Klassen Grid (verwaltet ein mxn Grid), Game (hat ein Grid und führt Aktionen/Entscheide aus, wie 'neues Spiel', 'ist Zug zulässig', 'ist Spiel beendet', ...) implementieren. Dann eine Klasse Visualizer, die ein Grid darstellen kann (mit was auch immer).
Das Framework soll auch generisch sein, sodass verschiedene solcher Spiele einfach entwickelt werden können.
-
Bin hier zuhause
- 14.06.2010, 14:55
- #7
Seufz...
Ich kriege es nicht mal im entferntesten hin, ein solches Grid sinvoll zu verwenden...
Ich bin verzweifelt auf der Suche nach irgendeinem guten Tutorial.. denn so lern ich einfach am besten...
Meinetwegen kann es auch ein TicTacToe Tutorial oder irgendwas in der art sein.. aber für CF findet man einfach absolut nix schlaues...^^
Danke trozdem..^^ ich finde keinen Einstieg in diese Sprache.. keine ahnung aber irgendwie weiss ich hinten und vorne nicht wo Anfangen...
Irgendwelche Rechner etc. zu programmieren ist kein Thema.. diese bescheuerte Tabelle gibt mir den Rest^^
-
entwickelt Apps
- 14.06.2010, 15:42
- #8
Hier mal eine Klasse mit der man quadratische Grids erstellen kann. Die Einträge sind vom Typ State und sind entweder leer, kreuz oder kreis (tictactoe nur horizontal oder vertikal).
Code:public class Grid { public enum State { Empty, Cross, Circle } private State[,] _grid; private int _dimension; public Grid(int dimension) { _dimension = dimension; _grid = new State[dimension, dimension]; } public bool SetField(int row, int column, State state) { _grid[row, column] = state; if (IsColFinished(column, state)) return true; if (IsRowFinished(row, state)) return true; return false; } private bool IsColFinished(int col, State state) { for (int row = 0; row < _dimension; ++row) { if (_grid[row, col] != state) return false; } return true; } private bool IsRowFinished(int row, State state) { for (int col = 0; col < _dimension; ++col) { if (_grid[row, col] != state) return false; } return true; } }
Code:Grid grid = new Grid(3); bool finished = grid.SetField(1, 1, Grid.State.Cross); finished = grid.SetField(0, 1, Grid.State.Cross); finished = grid.SetField(2, 1, Grid.State.Cross);
-
Bin hier zuhause
- 18.06.2010, 10:01
- #9
Danke, werds mir gerade mal angucken ob nun endlich der Groschen fällt..^^
Soo hab mal bisschen rumgebastelt und bin n Schritt weiter gekommen.
Der obige Code hat mir einiges an Logik vermittelt...
stehe nun aber vor einer anderen Frage..
Code:using System; using System.ComponentModel; using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Drawing; namespace gitternetz { public partial class NonoPanel : System.Windows.Forms.Panel { int color = 0; protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { if (color == 0) { Pen pen = new Pen(Color.Black, 1); Rectangle rect = new Rectangle(0, 0, 10, 10); Graphics gr = e.Graphics; gr.DrawRectangle(pen, rect); } else { SolidBrush brush = new SolidBrush(Color.Black); Rectangle rect = new Rectangle(0, 0, 10, 10); Graphics gr = e.Graphics; gr.FillRectangle(brush, rect); } base.OnPaint(e); } protected override void OnClick(EventArgs e) { if (color == 0) { color = 1; } else color = 0; base.OnClick(e); } } }
Ich möchte aber dass ich per klick auf das Viereck die Farbe ändern kann... das mit dem Int war nur ein erfolgloser Versuch..
Wie krieg ich das am gescheitesten hin?
Im c# fw schaff ich es relativ locker die 15x15 felder zu erstellen.. und sie schwarz zu färben bei einem klick... aber cf is irgendwie nervig xD
-
entwickelt Apps
- 18.06.2010, 17:38
- #10
Ruf mal am Ende von OnClick die Methode Invalidate(); auf! Diese fordert die Controls auf sich zu aktualisieren, sprich zu zeichnen.
-
Bin hier zuhause
- 19.06.2010, 07:36
- #11
cool, funzt.. Aber es ist ziemlich langsam mit einem Feld... Ist das nur via Emulator so oder auch direkt aufm Gerät?
-
entwickelt Apps
- 19.06.2010, 11:14
- #12
Das exe auf's Gerät kopieren und ausprobieren.
Die Pens und Brushes sollte man in der Klasse definieren und nicht bei jedem OnPaint neu erstellen.
schon mal was im voraus:
Um das Flickern zu vermeiden setzt man sog. double buffering ein. Dabei wird in einem nicht sichtbaren Bereich gezeichnet und erst nachdem alles fertig ist, wird es angezeigt. (in OpenGL geht das 'automatisch', in GDI löst man das durch Zeichnen in eine Bitmap (also in der OnPaint Methode) und zeigt dann die Bitmap.
Das sind meiner Meinung nach Sachen, die erst später in Angriff genommen werden sollen. (ausser es stört zu stark)
Zuerst muss es die Funtionen korrekt erfüllen, dann wird optimiert und gepimpt!
-
Bin hier zuhause
- 19.06.2010, 16:09
- #13
Vielen Dank..
Für die Geduld und die tolle Hilfestellung.
Ich werd mal weiter rumbasteln...werde dann mal sehn ob ich das oben geschilderte Rätsel coden kann^^ denke das ist schonmal n guter Start
Vielen Dank und bis bald
GreeZ
$me
-
Bin hier zuhause
- 30.06.2010, 09:22
- #14
So ich bins schonwieder^^
Bin wesentlich viel weiter gekommen..^^
Habe jetzt die Klasse NonoPanel.cs welches von Panel erbt und ein viereck ist.. mit click event.
Auf Form1.cs wird diese geladen
sind im moment gerade 5x5 Felder.. alle werden benennt beim generieren.
Jetzt habe ich aber ein weiteres Problem...
In der Klasse NonoPanel.cs steht der Name des angeklickten feldes... wenn ich beim OnClick event also eine MessageBox mache bekomme ich den Feldnamen..
Nun möchte ich aber mit dem Feldnamen weiterarbeiten auf der Form1.cs und ich schaffe es nicht.. diesen Wert von der Klasse NonoPanel in die Form1 zu übertragen...
http://nopaste.info/b0655b6185.html
hier der Code.. sind beide files...
schon in vorraus danke für die hilfe
-
entwickelt Apps
- 30.06.2010, 10:19
- #15
Auf diese Weise werden nxm Controls erstellt, was nicht sehr performant ist. Ich würde die Klasse Grid aus post #8 verwenden. Dann eine Klasse NonoGame, die u.a. die Members _grid und _solutionGrid vom Typ Grid hat. Diese Klasse hat dann Methoden, wie
New: erstellt ein neues Spiel (aus xml-File?)
Replay: initialisiert das aktuelle Spiel
Next: nächstes Spiel
Click(int x, int y): setzt/ändert das Feld (hier müssen z.B. Windows-Koordinaten auf [i,j] Indezes umgerechnet werden)
Compare: vergleicht _grid mit _solutionGrid -> fertig/fehler
In der MainForm wird dann so eine Klasse erstellt. Das Control NonoPanel kann dann ein Member NonoGame haben, dass von der MainForm gesetzt wird, das Grid zeichnet (z.B. mittels DrawLine) und im OnClick wird dann Click von NonoGame aufgerufen.
Ähnliche Themen
-
Fehlende Felder im Kalender
Von mipovie im Forum Android AppsAntworten: 0Letzter Beitrag: 31.03.2010, 04:54 -
Felder von Windows Mobile?
Von Ranttanplan im Forum HTC HD2 SonstigesAntworten: 2Letzter Beitrag: 04.03.2010, 01:07 -
Benutzerdefinierte Felder in Kontakten
Von PatrickOffline im Forum HTC Touch DiamondAntworten: 7Letzter Beitrag: 11.02.2010, 21:08 -
Benutzerdefinierte Felder
Von Leutnant1974 im Forum HTC HD2 KommunikationAntworten: 0Letzter Beitrag: 02.02.2010, 21:04
Pixel 10 Serie mit Problemen:...