Pixel in einer Konsole bewegen

04/05/2012 12:18 subsauber#1
Servus!
Ich habe mal wieder ein Problem...

Ich würde sehr gerne einen string oder auch nur ein Zeichen auf dem Konsolenbildschirm bewegen lassen...
Kann man irgendwie die Koordinaten des strings/char herausfinden?

Es interessiert mich, weil ich ein kleines Konsolenspiel programmieren möchte, bei dem man mit den Tasten dieses Zeichen durch die Konsole steuern kann

Beispielcode:
PHP Code:
/*
 * Author: André Fortmann
 * Version: 1.0
*/


using System;

public class 
Spiel
{
    private 
string benutzername//private-Elemente sind nur innerhalb derselben Klasse ansprechbar.
    
private string passwort;     //private-Elemente sind nur innerhalb derselben Klasse ansprechbar.

    
    
public Spiel() // Konstruktor
    
{
        
/*
         * Aufrufen der Methode einlesen() & Aufrufen der Methode ausgeben()
        */
        
einlesen();
        
ausgeben();
    }

    private 
void einlesen()
    {
        
//Dem string benutzername wird ein Wert zugewiesen.
        
Console.WriteLine("Bitte geben Sie Ihren Benutzernamen ein: ");
        
benutzername Console.ReadLine();
        
//Dem string passwort wird ein Wert zugewiesen
        
Console.WriteLine("Bitte geben Sie Ihr Passwort ein:");
        
passwort Console.ReadLine();

    }

    private 
void ausgeben()
    {
        
/*
         * Es wird überprüft, ob der eingegebene Benutzername und das 
         * eingegebene Passwort der Definition der If-Schleife entsprechen...
         * 
         **/
        
if (benutzername == "lol96" && passwort == "lol")
        {
            
Console.WriteLine("Ihr Benutzername lautet: " benutzername);
            
Console.WriteLine("Ihr Passwort lautet: " passwort);
            
Console.ReadLine();
        }
        else if (
benutzername == "lol123" && passwort == "lol34")
        {
            
Console.WriteLine("Ihr Benutzername lautet: " benutzername);
            
Console.WriteLine("Ihr Passwort lautet: " passwort);
            
Console.ReadLine();
        }
        else
        {
            
Console.WriteLine("Benutzername und/oder Passswort falsch... :-/");
            
Console.ReadLine();
        }



    }

    
}

class 
Program
{
    static 
int Main()
    {
        
//Erstellen eines Objekts Spiel1 mit den Eigenschaften und Methoden, aus der Klasse Spiel
        
Spiel Spiel1 = new Spiel();
        return 
0;
    }

   

Hinzu soll jetzt eine Methode bewegen kommen, die dann ds eigentliche Spiel ist. Hier soll dann einfach nur ein char bewegt werden, nur wie?

Freue mich auf eure Antworten;)
04/05/2012 18:01 Siebenkeim#2
Hallo,
ich selbst beschäftige mich in letzer Zeit mit C# und wollte sowas Ähnliches auch machen, aber so wie du es beschrieben hast ist es nicht möglich (korrigiert mich wenn ich falsch liege), also ich habe dafür eine 2-dimensionale Array erstellt die sozusagen das Spielfeld markiert.
Aber da ich jetzt nicht soviel schreiben möchte poste ich gerne den Code
(Ich selbst bin noch Anfänger)

Code:
        private string[,] gridArray = new string[100, 100];


        private int gridIndex1;
        private int gridIndex2;
        private int playerX;
        private int playerY;
        private int life = 3;


        public void SetGrid(int index1, int index2)
        {
            gridIndex1 = index1;
            gridIndex2 = index2;

                for (int i = 0; i <= index1; i++)
                {
                    for (int i2 = 0; i2 <= index2; i2++)
                    {
                        gridArray[i, i2] = Tile01;
                    }
                }
        }

        public void ShowGrid()
        {

                Console.Clear();
                Console.WriteLine("Life: " + life.ToString());
                Console.WriteLine();

                for (int i = 0; i <= gridIndex1; i++)
                {
                    for (int i2 = 0; i2 <= gridIndex2; i2++)
                    {
                        Console.Write(gridArray[i, i2]);
                    }

                    Console.WriteLine("\n");
                }

        }

        public void SetChar(int y, int x)
        {
            playerX = x;
            playerY = y;

            gridArray[y, x] = Player01;
        }

        public void MoveChar(int newX, int newY)
        {
            gridArray[playerY, playerX] = Tile01;

            playerX += newX;
            playerY += newY;

            gridArray[playerY, playerX] = Player01;
            ShowGrid();
        }
Habe noch die Datei selbst angehängt hoffe konnte dir helfen.

EDIT: Bei MoveChar bei den 2 Parametern kommt nicht die neue Coord rein sondern wie er sich bewegen soll z.B
Hoch = muss immer -1y gerechnet werden
Runter = genau andersherum
Links = muss immer -1x gerechnet werden
Rechts = genau andersherum