Hey danke schon mal für die Antworten. Habe jetzt folgendes eingebaut
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Up)
{
MessageBox.Show("Pfeiltaste nach oben");
Refresh();
return true;
}
if (keyData == Keys.Down)
{
MessageBox.Show("Pfeiltaste nach unten");
Refresh();
return true;
}
if (keyData == Keys.Right)
{
MessageBox.Show("Pfeiltaste nach rechts");
Refresh();
return true;
}
if (keyData == Keys.Left)
{
MessageBox.Show("Pfeiltaste nach links");
Refresh();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Ich müsste jetzt irgendwie meine Figur beim Drücken einer Pfeiltaste neuzeichen lassen, ist das korrekt? Wie bekomme ich jetzt in die if Abfrage irgendwie den Drawstring für die Figur rein? Oder gibt es bessere Lösungen für das Problem?
Hallo zusammen,
folgendes Problem. Ich habe ein Labyrinth und eine Spielfigur (@ Zeichen). Diese Figur möchte ich mit den Pfeiltasten der Tastatur durch das Labyrinth bewegen und die Items (Punkte) aufsammeln.
Wie kann ich die Steuerung in meinem Code implementieren?
string figur = "@";
Rectangle rectangle1 = new Rectangle(x, y, 400, 310);
Rectangle rectangle2 = new Rectangle(newx,newy,400,310);
Font drawFont = new Font("Century Gothic", 17);
SolidBrush drawBrush = new SolidBrush(Color.Green);
SolidBrush drawBrush2 = new SolidBrush(Color.Red);
for (int i = 0; i < Labyrinth.GetLength(0); i++)
{
for (int j = 0; j < Labyrinth.GetLength(1); j++)
{
rectangle1 = new Rectangle(x+(20*j), y+(20*i), 380, 260);
e.Graphics.DrawString(Char.ToString(Labyrinth[i, j]), drawFont, drawBrush, rectangle1);
}
}
e.Graphics.DrawString(figur, drawFont, drawBrush2, rectangle2);
}
Hallo und danke für die Antwort. Das mit dem auf einer Stelle zeichnen hab ich auch bemerkt, hab allerdings noch keine Lösung dafür. Kannst du mir hier ein Beispiel geben?
Ich scheitere aktuell daran eben jeden einzelnen Buchstaben in einer anderen Farbe zu zeichnen. Wie kann ich sagen wann welcher Buchstabe welche Farbe bekommt? Wie muss hier die Bedingung der if Abfrage aussehen?
Hallo zusammen,
ich habe ein 2DArray das aus "#" und "." besteht. Die # würde ich gerne in einer anderen Farbe zeichnen wie die Punkte. Kann ich das mit einer If Else Abfrage lösen? Oder welche Möglichkeiten gibt es hier. Folgendes habe ich bereits:
Okay werde ich machen. Kann mir noch jemand sagen wie ich Debuggen kann wenn das Programm wie in diesem Fall eine Datei bzw. Argument beim starten erwartet? Aktuell geht es natürlich beim debuggen bei der Console.ReadLine nicht weiter, gibt ja nichts zu lesen.
Ich glaube das Problem erstmal gelöst zu haben. Habe Char.ToString eingebaut.
Wenn ich das Programm jetzt starte und die Datei einlese erhalte ich folgende Ausgabe:
Wieso erhalte ich hier nur das erste Zeichen? Dachte die for Schleife arbeitet es bis zum Ende ab?!
Danke schon mal für eure Hilfe
Okay danke für deine Antwort. Gibt es aber bei Console.Read keine Möglichkleit den Umbruch zu erkennen und zu ignorieren? Dann hätte ich schon einzelne Chars und das Array ist auch schon gefüllt.
Okay danke das hab ich gemacht, jetzt meckert er hier nicht mehr. Jetzt hab ich aber wieder ein Konvertierungsproblem. Funktioniert hier die DrawString Methode nicht?
Hey danke schon mal für die Antwort. Ich bekomme jetzt folgende Fehlermeldung:
Der Typ char[,] kann nicht implizit in char[] konvertiert werden. Im Anhang ist die genaue Fehlermeldung.
Warum wird hier versucht char in char zu konvertieren? Was kann ich dagegen tun?
Das ist eben mein Problem das ich nicht weiß wie ich das Array anlegen muss. Was heißt als Klassenmember?
Sorry ich bin absoluter Anfänger. Vielleicht bin ich hier falsch?!
Danke erstmal für die schnelle Antwort.
Wie kann ich das Problem beheben? Mit ReadKey? oder eine Abfrage die≤ spalten abfragt und dann die Zeile wechselt ohne Umbruch?
Hallo zusammen,
ich habe folgendes Problem. Ich lese die nachfolgende .dat Datei beim Programmaufruf über programm.exe < test.dat ein:
19
13
###################
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
#.#.#.### ###.#.#.#
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
###################
Das ist mein Code hierzu:
using System;
using System.Text;
using System.Windows.Forms;
namespace ConsoleApp2
{
class Labyrinth : Form
{
public static void Main(string[] args)
{
int spalten, zeilen;
spalten = Int32.Parse(Console.ReadLine());
zeilen = Int32.Parse(Console.ReadLine());
char[,] labyrinth = new char[zeilen, spalten];
for (int i = 0; i < zeilen; i++)
{
for (int j = 0; j < spalten; j++)
{
labyrinth[i, j] = (char)Console.Read();
Console.Write(labyrinth[i, j]);
}
}
}
}
}
Zum Testen habe ich ein Console.Write eingebaut was den Inhalt vom Array auf der Konsole ausgeben soll. Folgendes erhalte ich bei der Ausgebe:
###################
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
#.#.#.### ###.#.#.#
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#...............
Es fehlen 3 Zeichen aus der vorletzten Zeile sowie die Letzte Zeile komplett. Ich hab keine Idee an was das liegen kann.
Hat jemand einen Tipp für mich?
Beste Grüße
Hallo zusammen,
ich würde gerne den Inhalt meines Arrays mit DrawString in einer Windows Forms Anwendung zeichnen. Das Array wird beim Programmaufruf durch lesen einer .dat Datei gefüllt. Folgendes habe ich bereits:
using System;
using System.Windows.Forms;
using System.Drawing;
public class MyForm : Form
{
public MyForm()
{
Text = "Labyrinth";
}
public static void Main(string[] args)
{
int spalten, zeilen;
spalten = Int32.Parse(Console.ReadLine());
zeilen = Int32.Parse(Console.ReadLine());
char[,] labyrinth = new char[zeilen, spalten];
for (int i = 0; i < zeilen; i++)
{
for (int j = 0; j < spalten; j++)
{
labyrinth[i, j] = (char)Console.Read();
Console.Write(labyrinth[i, j]);
}
}
Application.Run(new MyForm());
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawString("inhalt vom array soll gezeichnet werden", Font,
new SolidBrush(Color.Black), ClientRectangle);
}
}
wie kann ich mein Array in der DrawString Methode angeben? Ist das so überhaupt möglich wie ich es mir vorstelle?
Beste Grüße
Hallo zusammen, ich habe aktuell eine ganz ähnliche Aufgabestellung und verstehe nicht wirklich wie ich aus der eingelesenen .dat Datei eine Windows Forms Anwendung mache. Kann mir hier jemand einen Denkanstoß geben?
Beste Grüße