15x15 Felder generieren(Nonogramm) 15x15 Felder generieren(Nonogramm)
Ergebnis 1 bis 15 von 15
  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
    0
     

  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)
    2
     

  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...
    0
     

  4. Ja, es funktioniert. (auf dem HD2 hat man mit OpenGLES2 noch mehr Möglichkeiten test opengles2)
    Was genau ist die Fehlermeldung im SharpDevelop?
    0
     

  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?
    0
     

  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.
    0
     

  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^^
    0
     

  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;
            }
        }
    Und wird z.B. so gebraucht: (das dritte finished wird dann true liefern, da die mittlere Spalte aus kreuzen besteht)
    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);
    Vielleicht erleichtert das den Einstieg.
    2
     

  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);
            }
    
        }
    }
    das erstellt einfach mal ein kleines Viereck..

    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
    0
     

  10. Ruf mal am Ende von OnClick die Methode Invalidate(); auf! Diese fordert die Controls auf sich zu aktualisieren, sprich zu zeichnen.
    2
     

  11. cool, funzt.. Aber es ist ziemlich langsam mit einem Feld... Ist das nur via Emulator so oder auch direkt aufm Gerät?
    0
     

  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!
    2
     

  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
    0
     

  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
    0
     

  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.
    0
     

Ähnliche Themen

  1. Fehlende Felder im Kalender
    Von mipovie im Forum Android Apps
    Antworten: 0
    Letzter Beitrag: 31.03.2010, 04:54
  2. Felder von Windows Mobile?
    Von Ranttanplan im Forum HTC HD2 Sonstiges
    Antworten: 2
    Letzter Beitrag: 04.03.2010, 01:07
  3. Benutzerdefinierte Felder in Kontakten
    Von PatrickOffline im Forum HTC Touch Diamond
    Antworten: 7
    Letzter Beitrag: 11.02.2010, 21:08
  4. Benutzerdefinierte Felder
    Von Leutnant1974 im Forum HTC HD2 Kommunikation
    Antworten: 0
    Letzter Beitrag: 02.02.2010, 21:04

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

nonogramm erstellen

nonogramm selbst erstellen

nonogramm erstellen onlinenonogramm selber erstellennonogramm selber machennonogramme selbst erstellennonogrammnonogramm onlinenonogramme erstellennonogramm programmnonogramm programmierennonogrammefarb nonogramm onlinenonogramm.chnonogramm windows mobilenonogramme selber machennonogramm colornonogramme selber erstellenNonogramm online erstellennonogramme programmierenwie geht ein nonogrammnonogramm entwerfennonogram erstellen

Stichworte