Autor Beitrag
gervacio
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 26.11.08 16:42 
ich habe vollgendes Probelm,

-ich lasse mir das Fenstergröße generieren..
-dann setze ich den cursor(zufallsbedingt)
-Stern zeichen (zeichenen())
-nächste Position des Stern ausrechnen, altes zeichen löschen neue Position setzen und strern zeichen..

Ab und zu sprint mein Stern aber ausserhalb des grenzwertes..

Wieso? ich habe aber ne if-Anweisung des das abfangen soll wenn meine position x oder y den gleichen wert haben wie die maximale Breite oder Höhe des fensters


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
using System.Collections.Generic;
using System;
using System.Threading;
using System.Text;
using System.Collections;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            //Cusor Position festelgen
            Random rnd = new Random( );
            int x = rnd.Next(Console.WindowWidth -1);
           
            int y = rnd.Next(Console.WindowHeight -1);
            
            Position starter1 = new Position(x,y,0,1);

            Console.CursorVisible = false;

            while(true)
            {
                starter1.Zeichnen( );
                Thread.Sleep(40);
                starter1.FolgeSchritt( );
            }
        }
    }
}
public class Position
{
    private 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((posX == Console.WindowWidth - 1) || (posX == 0))
        {
            richtungX = -richtungX;
        }
        if((posY == Console.WindowHeight - 1) || (posY == 0))
        {
            richtungY = -richtungY;
        }
        // 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);
    }
}


Moderiert von user profile iconUGrohne: Code- durch C#-Tags ersetzt
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 26.11.08 16:53 
Wenn der Stern außerhalb ist, dann ist posX oder posY ja größer als die Breite oder kleiner als 0 und nicht gleich. Die Bedingung musst Du also überarbeiten
gervacio Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 26.11.08 17:16 
Oder ich setzte

ausblenden C#-Quelltext
1:
2:
3:
// Neues Zeichen setzen
        posX += richtungX;
        posY += richtungY;


dann überprüfe ich mit meiner Schleife, dann würde es stimmen denke ich...

Aber deine Antwort vorhin ist richtig!!

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt