Witam. Jestem początkującym w pisaniu programów c# oraz mam problem-
Chciałbym, żeby mój wąż po dotknięciu ściany bocznej odbił się lub przeniósł na przeciwną stronę planszy, mam nadzieję że możecie pomóc. Oto kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;
namespace ConsoleApplication8
{
class Program
{
public static int lewa = 4;
public static int gora = 2;
public static int dol_ = 1;
public static int prawa = 3;
public static int dlu = 1;
public static int speed = 0;
public static int dlugos = 300;
public static int szybkosc = 200;
public static string dol = "";
public static string dlugosc = "";
public static int ry = 0;
public static int rx = 0;
public static int zmiana = 3;
public static string waz = "";
public static int MINX = 0;
public static int MINY = 0;
public static int MAXX = 101;
public static int MAXY = 50;
public static int wx = 0;
public static int wy = 0;
public static TimeSpan rosnij;
static void Main(string[] args)
{
Console.CursorVisible = false;
bool iscontinue = true;
int x = 1;
int y = 1;
int wy = y - 1;
//Program.zmiana = 3;
DateTime start = DateTime.Now;
DateTime stop = DateTime.Now;
while (iscontinue)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo Info = Console.ReadKey();
if (Info.Key == ConsoleKey.RightArrow)
{
x = x + 1;
waz = "-o";
zmiana = prawa;
}
if (Info.Key == ConsoleKey.DownArrow)
{
y = y + 1;
Program.zmiana = dol_;
waz = "o";
}
if (Info.Key == ConsoleKey.UpArrow)
{
y = y - 1;
Program.zmiana = gora;
waz = "o";
}
if (Info.Key == ConsoleKey.LeftArrow)
{
zmiana = lewa;
x = x - 1;
waz = "o-";
}
}
else
{
if (zmiana == dol_)
{
waz = "o";
y = y + 1;
}
if (zmiana == gora)
{
waz = "o";
y = y - 1;
}
if (zmiana == prawa)
{
x = x + 1;
waz = "-o";
}
if (zmiana == lewa)
{
x = x - 1;
waz = "o-";
}
}
if (x < 0)
x = MAXX-dlu;
/*if (y < 0)
y = MAXY;*/
Console.Clear();
rysuj(x, y, out x, out y);
Thread.Sleep(szybkosc);
stop = DateTime.Now;
rosnij = stop - start;
if (rosnij.Seconds >= 5)
{
if (dlugos == 300)
{
dlu = dlu + 1;
}
// dlugos = dlugos + 1;
speed = speed + 1;
start = stop;
}
if (x > MAXX)
x = 0;
if (y > MAXY)
y = 0;
}
}
public static void plansza_w(int x, int y, int maxx, int maxy)
{
int mx = maxx + 2;
dlugosc = SetChar(mx, "#");
dol = SetChar(mx, "#");
//MAXX = MAXX - 1;
Console.SetCursorPosition(0, 0);
Console.Write(dlugosc);
string liniew = "#";
for (int ilo = 0; ilo < maxy; ilo++)
{
Console.Write(liniew);
Console.SetCursorPosition(mx, ilo);
Console.WriteLine("#");
}
Console.WriteLine(dol);
}
public static string SetChar(int k, string s)
{
string ret = "";
for (int l = 0; l < k; l++)
ret += s;
return ret;
}
public static void rysuj(int x, int y, out int rx, out int ry)
{
rx = 0;
ry = 0;
for (int k = 0; k < MAXX; k++)
{
for (int l = 0; l < MAXY; l++)
{
//x,y
if (k == x && l == y)
{
//string który ma k-spacji i l-enterów
//if (Program.zmiana== 1)
//{
//waz = "|\n" + spacje + "o";
//zmiana = 0;
//}
//if (Program.zmiana==gora)
//{
//}
// Console.Write(entery + spacje+ waz);
if(zmiana==dol_)
{
waz_dol(x,y, out y);
rx = x;
ry = y;
return;
}
if(zmiana==gora)
{
waz_gora(x, y, out y);
rx = x;
ry = y;
return;
}
if(zmiana == prawa || zmiana == lewa)
{
waz_lewa_prawa(x,y,prawa, out x);
rx = x;
ry = y;
return;
}
break;
}
}
}
}
public static void napisy(int wy, int wx,int x,int y)
{
MAXY = MAXY + 1;
Console.SetCursorPosition(0,MAXY);
MAXY = MAXY - 1;
wx = x - 1;
wy = y - 1;
Console.WriteLine("\nWspółrzędne Węża:\nX=" + wx + "\nY=" + wy);
}
public static void waz_gora(int x,int y, out int ry)
{
ry = y;
y = y + dlu;
for(int ala=0; ala<=dlu; ala++)
{
y = y - 1;
bool iscontinue = true;
while (iscontinue)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
ala = dlu;
x = x - 1;
break;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
ala = dlu;
y = y + 1;
break;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
ala = dlu;
break;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
ala = dlu;
break;
}
else
{
iscontinue = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("|");
}
bool iscontinue2 = true;
while (iscontinue2)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
}
else
{
iscontinue2 = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("o");
napisy(wy, wx, x, y);
plansza_w(x, y, MAXX, MAXY);
}
public static void waz_dol(int x, int y, out int ry)
{
ry = y;
y = y - dlu;
for (int ala = 0; ala <= dlu; ala++)
{
y = y + 1;
bool iscontinue = true;
while (iscontinue)
{
if (MAXY == y || y > MAXY)
{
zmiana = dol_;
ala = dlu;
y = y - 1;
break;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
ala = dlu;
y = y + 1;
break;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
ala = dlu;
break;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
ala = dlu;
break;
}
else
{
iscontinue = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("|");
}
bool iscontinue3 = true;
while (iscontinue3)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
y = y - 1;
break;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
}
else
{
iscontinue3 = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("o");
napisy(wy, wx, x, y);
plansza_w(x, y, MAXX, MAXY);
}
public static void waz_lewa_prawa(int x,int y, int prawo, out int rx)
{
rx = x;
if (zmiana == prawa)
{
x = x - dlu;
for (int ala = 0; ala <= dlu; ala++)
{
x = x + 1;
bool iscontinue = true;
while (iscontinue)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
ala = 1;
iscontinue = false;
break;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
ala = dlu;
break;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
ala = 1;
iscontinue = false;
break;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
ala = dlu;
x = x + 1;
break;
}
else
{
iscontinue = false;
}
}
}
}
}
Console.SetCursorPosition(x,y);
Console.Write("-");
}
bool iscontinue1 = true;
while (iscontinue1)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
}
else
{
iscontinue1 = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("o");
napisy(wy, wx, x, y);
plansza_w(x, y, MAXX, MAXY);
}
if (zmiana == lewa)
{
Console.SetCursorPosition(x, y);
Console.Write("o");
for (int ala = 0; ala <= dlu; ala++)
{
x = x + 1;
bool iscontinue = true;
while (iscontinue)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
ala = dlu;
break;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
ala = dlu;
break;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
ala = dlu;
break;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
ala = dlu;
x = x + 1;
break;
}
else
{
iscontinue = false;
}
}
}
}
}
while (iscontinue)
{
if (MAXY == y || y > MAXY)
{
zmiana = gora;
}
else
{
if (y == 0 || y < 0)
{
zmiana = dol_;
}
else
{
if (x == MAXX || x > MAXX)
{
zmiana = lewa;
}
else
{
if (x == 0 || x < 0)
{
zmiana = prawa;
}
else
{
iscontinue = false;
}
}
}
}
}
Console.SetCursorPosition(x, y);
Console.Write("-");
}
napisy(wy, wx, x, y);
plansza_w(x, y, MAXX, MAXY);
}
}
}
}