Как можно сделать выполнение функции по таймеру? При этом нужно передавать в функцию несколько аргументов.
using System;
using System.Collections.Generic;
using System.Timers;
using System.Threading.Tasks;
namespace Snake
{
class Snake
{
int X;
int Y;
int Direction;
List<Body> body;
public void SetStartPos(int Y,int X)
{
this.X = X;
this.Y = Y;
}
public void SetDirection(int Direction)
{
this.Direction = Direction;
}
public int GetPosX()
{
return this.X;
}
public int GetPosY()
{
return this.Y;
}
public List<Body> GetBody()
{
return this.body;
}
public void Move()
{
switch(Direction)
{
case 2:
this.X += 1; //->
break;
case 1:
this.Y -= 1; // Up
break;
case -1:
this.Y += 1; // Down
break;
case -2:
this.X -= 1; //<-
break;
}
}
}
class Body
{
int X;
int Y;
public void SetPos(int Y, int X)
{
this.X = X;
this.Y = Y;
}
public int GetPosX()
{
return this.X;
}
public int GetPosY()
{
return this.Y;
}
}
class Fruit
{
int X;
int Y;
public void SetPos(int Y, int X)
{
this.X = X;
this.Y = Y;
}
public int GetPosX()
{
return this.X;
}
public int GetPosY()
{
return this.Y;
}
}
class Program
{
private static Timer aTimer;
public static void update(Snake snake,List<Fruit> fruits,char[,] field, ConsoleKeyInfo key)
{
if (key.KeyChar == 'd')
{
snake.SetDirection(2);
}
if (key.KeyChar == 'w')
{
snake.SetDirection(1);
}
if (key.KeyChar == 's')
{
snake.SetDirection(-1);
}
if (key.KeyChar == 'a')
{
snake.SetDirection(-2);
}
Console.Clear();
field[snake.GetPosY(), snake.GetPosX()] = ' ';
snake.Move();
field[snake.GetPosY(), snake.GetPosX()] = 'O';
field[fruits[0].GetPosY(), fruits[0].GetPosX()] = '?';
List<Body> body = snake.GetBody();
for (int i =0;i<27;i++)
{
string test="";
for(int l=0;l<38;l++)
{
test += field[i, l];
}
Console.WriteLine(test);
}
}
static void Main(string[] args)
{
char[,] field = {
{'/','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|'},
{'|','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','/'},};
List<Fruit> fruits = new List<Fruit>();
Fruit fruit = new Fruit();
Snake s = new Snake();
fruit.SetPos(12,10);
s.SetStartPos(10, 10);
fruits.Add(fruit);
ConsoleKeyInfo key;
// do
// {
// key = Console.ReadKey();
// update(s, fruits, field, key);
// //Console.WriteLine(key.Key + " клавиша была нажата");
//
// }
// while (key.Key != ConsoleKey.Escape); // по нажатию на Escape завершаем цикл
aTimer = new System.Timers.Timer();
aTimer.Interval = 2000;
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset = true;
// Start the timer
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program at any time... ");
Console.ReadLine();
void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
update(s, fruits, field, key); // ТУТ ПРОБЛЕМА!<-------------
}
}
}
}
Проблема заключается в том, что key
не определен изначально.
Замени кусок кода в методе Main
на следующий:
ConsoleKeyInfo key = new ConsoleKeyInfo();
aTimer = new System.Timers.Timer();
aTimer.Interval = 500;
aTimer.Elapsed += (ss, e) =>
{
update(s, fruits, field, key);
};
aTimer.AutoReset = true;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program at any time... ");
while(true)
{
// передаем FALSE что бы не отображать клавиши в консоли
key = Console.ReadKey(false);
if (key.Key == ConsoleKey.Enter) break;
update(s, fruits, field, key);
}
aTimer.Enabled = false;
Console.Clear();
Console.WriteLine("bay!");
Console.ReadLine();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Только сейчас заметил, что C# не обновляет свойства классов, в реальном времениЕсть свойство в классе Str:
У меня есть панель с контролами, у некоторых Dock = DockStyleTop, у некоторых Bottom
вроде все правильно написал, но Drag enter не работаетallowdrop где находится я не нашел что можно сделать?
Существует сайт на вордпресс sitenameru , мне требуется создать отдельную версию, только для одной страны, которую будет перенаправлять на sitename