private void GameOver() { stopToolStripMenuItem.PerformClick(); FieldPnl.CreateGraphics().Clear(ClrBack); GameOverLbl.Visible = true; PAKTCLbl.Visible = true; PEOETELbl.Visible = true; }
private void darkToolStripMenuItem_Click(object sender, EventArgs e) { darkToolStripMenuItem.Checked = true; brightToolStripMenuItem.Checked = false; ClrBack = Color.DimGray; ClrFore = Color.Silver; MyPen.Color = Color.Cyan; brushFruit = Brushes.Gold; FieldPnl.Refresh(); }
private void brightToolStripMenuItem_Click(object sender, EventArgs e) { darkToolStripMenuItem.Checked = false; brightToolStripMenuItem.Checked = true; ClrBack = Color.WhiteSmoke; ClrFore = Color.Black; MyPen.Color = Color.LimeGreen; brushFruit = Brushes.OrangeRed; FieldPnl.Refresh(); }
private void FieldPnl_SizeChanged(object sender, EventArgs e) { wid = FieldPnl.Width / 10.0; hei = FieldPnl.Height / 10.0; widInt = (int)Math.Truncate(wid); heiInt = (int)Math.Truncate(hei); SnakeBody = new List <Point>() { new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2) }; FieldPnl.Refresh(); }
private void showGridToolStripMenuItem_Click(object sender, EventArgs e) { if (showGridToolStripMenuItem.Checked) { showGridToolStripMenuItem.Checked = false; gridField = false; } else { showGridToolStripMenuItem.Checked = true; gridField = true; } FieldPnl.Refresh(); }
private void startToolStripMenuItem_Click(object sender, EventArgs e) { Tmr.Start(); gamedo = true; pauseToolStripMenuItem.Enabled = true; stopToolStripMenuItem.Enabled = true; this.FormBorderStyle = FormBorderStyle.FixedSingle; Graphics g = FieldPnl.CreateGraphics(); fruit = NewFruit(); g.FillEllipse(brushFruit, fruit.X * 10, fruit.Y * 10, 10, 10); TSSL1.Text = $"Score: {score}"; if (GameOverLbl.Visible) { GameOverLbl.Visible = false; PAKTCLbl.Visible = false; PEOETELbl.Visible = false; } startToolStripMenuItem.Enabled = false; difficultyToolStripMenuItem.Enabled = false; }
private void stopToolStripMenuItem_Click(object sender, EventArgs e) { Tmr.Stop(); gamedo = false; FormBorderStyle = FormBorderStyle.Sizable; moves = 0; score = 0; KeyWay = Way.None; wid = FieldPnl.Width / 10.0; hei = FieldPnl.Height / 10.0; widInt = (int)Math.Truncate(wid); heiInt = (int)Math.Truncate(hei); SnakeBody.Clear(); SnakeBody = new List <Point>() { new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2), new Point(widInt / 2, heiInt / 2) }; FieldPnl.Refresh(); stopToolStripMenuItem.Enabled = false; startToolStripMenuItem.Enabled = true; pauseToolStripMenuItem.Enabled = false; difficultyToolStripMenuItem.Enabled = true; }
private void Form1_KeyDown(object sender, KeyEventArgs e) { if (pause && e.KeyData == Keys.Escape) { pauseToolStripMenuItem.PerformClick(); } else if (gamedo && !pause) { switch (e.KeyData) { case Keys.Up: if (KeyWay != Way.Down) { KeyWay = Way.Up; } break; case Keys.Right: if (KeyWay != Way.Left) { KeyWay = Way.Right; } break; case Keys.Left: if (KeyWay != Way.Right) { KeyWay = Way.Left; } break; case Keys.Down: if (KeyWay != Way.Up) { KeyWay = Way.Down; } break; case Keys.Escape: pauseToolStripMenuItem.PerformClick(); moves--; break; } moves++; } else if (GameOverLbl.Visible) { switch (e.KeyData) { case Keys.Escape: if (PEOETELbl.Visible) { Close(); } else { if (pause) { startToolStripMenuItem.PerformClick(); } else { pauseToolStripMenuItem.PerformClick(); } } break; case Keys.Enter: if (PEOETELbl.Visible) { Close(); } break; default: GameOverLbl.Visible = false; PAKTCLbl.Visible = false; PEOETELbl.Visible = false; FieldPnl.Refresh(); break; } } }
private void Tmr_Tick(object sender, EventArgs e) { if (gamedo) { if (!pause && KeyWay != Way.None) { int x = SnakeBody[0].X, y = SnakeBody[0].Y; switch (KeyWay) { case Way.Up: y--; break; case Way.Right: x++; break; case Way.Left: x--; break; case Way.Down: y++; break; } if (y < 0 || y >= heiInt || x < 0 || x >= widInt) { GameOver(); return; } for (int i = 0; i < SnakeBody.Count; i++) { if (SnakeBody[i].X == x && SnakeBody[i].Y == y) { GameOver(); return; } } Point newHead = new Point(x, y); SnakeBody.Insert(0, newHead); Graphics g = FieldPnl.CreateGraphics(); if (SnakeBody[0].X == fruit.X && SnakeBody[0].Y == fruit.Y) { if (SnakeBody.Count == widInt * heiInt) { MessageBox.Show("You won", "Congratulations!"); GameOver(); return; } fruit = NewFruit(); g.DrawLines(MyPen, SnakeBody.Select(p => new Point(p.X * 10 + 5, p.Y * 10 + 5)).ToArray()); g.FillEllipse(brushFruit, fruit.X * 10, fruit.Y * 10, 10, 10); TSSL1.Text = $"Score: {++score}"; } else { int lastI = SnakeBody.Count - 1; g.FillRectangle(new Pen(ClrBack).Brush, SnakeBody[lastI].X * 10, SnakeBody[lastI].Y * 10, 11, 11); g.FillRectangle(new Pen(ClrBack).Brush, SnakeBody[lastI - 1].X * 10, SnakeBody[lastI - 1].Y * 10, 11, 11); if (gridField) { g.DrawRectangle(new Pen(ClrFore), SnakeBody[lastI].X * 10, SnakeBody[lastI].Y * 10, 10, 10); g.DrawRectangle(new Pen(ClrFore), SnakeBody[lastI - 1].X * 10, SnakeBody[lastI - 1].Y * 10, 10, 10); } SnakeBody.RemoveAt(lastI); g.DrawLines(MyPen, SnakeBody.Select(p => new Point(p.X * 10 + 5, p.Y * 10 + 5)).ToArray()); } } else { if (moves == 0) { FieldPnl.CreateGraphics().FillEllipse(MyPen.Brush, widInt * 5, heiInt * 5, 10, 10); } } } }