我有简单的蛇游戏。有蛇和一种随机食物。但我想要另一种食物,但这种食物会受到时间的限制。例如:当蛇达到20点时,它会产生额外的限时食物。这种食物将显示5秒钟(例如)。我怎么能这样做?
public partial class Form1 : Form
{
Random randFood = new Random();
private had _model;
Graphics paper;
had snakes = new had();
kocky food;
bool left = false;
bool right = false;
bool up = false;
bool down = false;
int score = 0;
kocky1 food1;
public Form1()
{
InitializeComponent();
food = new kocky(randFood);
food1 = new kocky1(randFood); //time limited food//
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
paper = e.Graphics;
food.drawFood(paper);
food1.drawFood(paper);
snakes.drawSnake(paper);
}
//---------------------------program----------------------------------------------------//
private void timer1_Tick(object sender, EventArgs e)
{
snakeScoreLabel.Text = Convert.ToString(score);
if (down) { snakes.moveDown(); }
if (up) { snakes.moveUp(); }
if (right) { snakes.moveRight(); }
if (left) { snakes.moveLeft(); }
this.Invalidate();
collision();
for (int i = 0; i < snakes.SnakeRec.Length; i++)
{
if (snakes.SnakeRec[i].IntersectsWith(food.foodRec))
{
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "C:\\Users\\Boris\\Desktop\\C# had\\SNOTPLOP.wav";
wplayer.controls.play();
timer1.Enabled = true;
score += 1;
ProgressBar1.Increment(1);
snakes.growSnake();
food.foodlocation(randFood);
food1.foodlocation(randFood);
}
if (snakes.SnakeRec[i].IntersectsWith(food1.foodRec)) //time limited food//
{
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "C:\\Users\\Boris\\Desktop\\C# had\\SNOTPLOP.wav";
wplayer.controls.play();
timer1.Enabled = true;
score += 1;
ProgressBar1.Increment(1);
snakes.growSnake();
food.foodlocation(randFood);
food1.foodlocation(randFood);
}
答案 0 :(得分:1)
你的时间有限的食物可能有一个int持续时间,它会被计时器减少,并在0时删除。
答案 1 :(得分:0)
每种食物都有自己的状态:正常,特殊。
创建食物时设置时间戳或其他创建时间指示(如刻度) 然后,当你达到生命秒数时,你可以杀死食物实例并将其从屏幕上移除