Hallo Leute bin neu hier und noch nicht so stark in c# aber gebe mein bestes…Habe aus versucht einfachmal ne Spiel zu programmeiren…
Es werden Sterne erzeugt und fliegen im Fenster beliebig herum…
Ich will nun das ganze so umbauen dass wenn mann irgend eine Taste drückt der Stern dagegen abprallt und die richtung ändert…
Hier ne kleines Szenario
Während das Sternchen fliegt, kannst will ich eine der beiden Tasten drücken \ oder /.
Das gedrückte Zeichen soll an der Stelle gezeichnet werden an der sich das Sternchen gerade befindet.
Dieses Zeichen soll immer sichtbar bleiben. Das Sternchen prallt an diesem Zeichen ab. Wie?
Falls du zu dem Zeitpunkt auf die Leertaste drückst zu welchen das Sternchen gerade an einen der Schrägstriche stoßen würde, ist der Schrägstrich zu entfernen. Das Sternchen prallt dann natürlich nicht mehr ab, sondern
fliegt in seiner Richtung weiter.
kommt von links und geht nach unten weiter
→ * *
*
*
V
kommt von links und geht nach oben weiter
^
*
*
→ * */
Hättest da jmd ne eine Idee wie ich das realisieren kann/könnte? Es lässt mir keine Ruhe…
[CSharp]
using System;
using System.Collections.Generic;
using System.Text;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ArrayList Liste = new ArrayList( );
//Cusor Position festelgen
int mitteX = Console.WindowWidth / 2;
int mitteY = Console.WindowHeight / 2;
Position starter1 = new Position(mitteX, mitteY, +1, 0);
Position starter2 = new Position(mitteX + 10, mitteY - 5, +1, +1);
Position starter3 = new Position(mitteX - 10, mitteY + 10, 0, -1);
Console.CursorVisible = false;
Liste.Add(starter3);
Liste.Add(starter2);
Liste.Add(starter1);
while(true)
{
foreach(Position p in Liste) { p.Zeichnen( ); }
Thread.Sleep(30);
foreach(Position p in Liste) { p.FolgeSchritt( ); }
}
}
}
}
public class Position
{
public int posX, posY, richtungX, richtungY;
public Position(int x, int y, int xd, int yd)
{
posX = x;
posY = y;
richtungY = yd;
richtungX = xd;
}
public void FolgeSchritt( )
{
// alte Zeichen löschen
BildAusgabe(" ");
//Ob cursor Rand stößt ggf Richtung drehen
if((posY == Console.WindowHeight - 1) || (posY == 0))
{
richtungY *= -1;
}
if((posX == Console.WindowWidth - 1) || (posX == 0))
{
richtungX *= -1;
}
// Neues Zeichen setzen
posX += richtungX;
posY += richtungY;
}
public void Zeichnen( )
{
BildAusgabe("*");
}
private void BildAusgabe(string a)
{
Console.CursorLeft = posX;
Console.CursorTop = posY;
Console.Write(a);
}
}[/CSharp]