Sybatron

Wanted Version

Oct 21st, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.17 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10.  
  11. namespace Hang_Man_Project
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.             ReadFromFile();
  19.         }
  20.  
  21.         enum BodyParts
  22.         {
  23.             Head,
  24.             Left_Eye,
  25.             Right_Eye,
  26.             Mouth,
  27.             Body,
  28.             Left_Arm,
  29.             Righ_Arm,
  30.             Left_Leg,
  31.             Right_Leg
  32.         }
  33.  
  34.         int amount = 0;
  35.  
  36.         string word = "";
  37.  
  38.         List<string> words = new List<string> ();
  39.  
  40.         List<Label> labels = new List<Label>();
  41.  
  42.         void DrawBodyPart(BodyParts bp)
  43.         {
  44.             Graphics g = panel1.CreateGraphics();
  45.             Pen p = new Pen(Color.Black, 2);
  46.             SolidBrush s = new SolidBrush(Color.Black);
  47.             switch (bp)
  48.             {
  49.                 case BodyParts.Head: g.DrawEllipse(p, 65, 40, 40, 40); break;
  50.                 case BodyParts.Left_Eye: g.FillEllipse(s, 75, 52, 5, 5); break;
  51.                 case BodyParts.Right_Eye: g.FillEllipse(s, 90, 52, 5, 5); break;
  52.                 case BodyParts.Mouth: g.DrawArc(p, 75, 67, 25, 10, -45, -90); break;
  53.                 case BodyParts.Body: g.DrawLine(p, new Point(85, 80), new Point(85, 130)); break;
  54.                 case BodyParts.Left_Arm: g.DrawLine(p, new Point(85, 88), new Point(60, 105)); break;
  55.                 case BodyParts.Righ_Arm: g.DrawLine(p, new Point(85, 88), new Point(110, 105)); break;
  56.                 case BodyParts.Left_Leg: g.DrawLine(p, new Point(85, 130), new Point(60, 150)); break;
  57.                 case BodyParts.Right_Leg: g.DrawLine(p, new Point(85, 130), new Point(110, 150)); break;
  58.             }
  59.         }
  60.  
  61.         string GetRandomWord()
  62.         {
  63.             int length = words.Count;
  64.             if (length <= 0)
  65.                 return "";
  66.             Random random = new Random ();
  67.             int index = random.Next (0, length - 1);
  68.             return words[index];
  69.         }
  70.  
  71.         void ReadFromFile()
  72.         {
  73.             if (!File.Exists(".\\words.txt"))
  74.                 return;
  75.  
  76.             StreamReader streamReader = new StreamReader(".\\words.txt");
  77.  
  78.             if (streamReader == null)
  79.                 return;
  80.  
  81.             while (!streamReader.EndOfStream)
  82.             {
  83.                 words.Add(streamReader.ReadLine());
  84.             }
  85.  
  86.             streamReader.Close();
  87.         }
  88.  
  89.         void DrawHangManPost()
  90.         {
  91.             Graphics g = panel1.CreateGraphics();
  92.             Pen p = new Pen(Color.Black, 10);
  93.             g.DrawLine(p, new Point(150,160), new Point(150,10));
  94.             g.DrawLine(p, new Point(150,15), new Point(85,15));
  95.             g.DrawLine(p, new Point(85,10), new Point(85,40));
  96.         }
  97.  
  98.         void MakeLabels()
  99.         {
  100.             word = GetRandomWord();
  101.             char[] chars = word.ToCharArray();
  102.             int between = 275 / chars.Length - 1;
  103.             for (int i = 0; i <= chars.Length - 1; i++)
  104.             {
  105.                 labels.Add(new Label());
  106.                 labels[i].Location = new Point((i * between) + 10, 52);
  107.                 labels[i].Text = "_";
  108.                 labels[i].Font = new Font("Arial", 12);
  109.                 labels[i].BackColor = Color.Transparent;
  110.                 labels[i].Parent = groupBox1;
  111.                 labels[i].BringToFront();
  112.                 labels[i].CreateControl();
  113.             }
  114.             int length = chars.Length;
  115.             label1.Text = label1.Text + " " + length.ToString();
  116.         }
  117.  
  118.         private void Form1_Shown(object sender, EventArgs e)
  119.         {
  120.             DrawHangManPost();
  121.             MakeLabels();
  122.         }
  123.  
  124.         private void button1_Click(object sender, EventArgs e)
  125.         {
  126.             char letter = textBox1.Text.ToLower().ToCharArray()[0];
  127.             if (!char.IsLetter(letter) || letter >= '\u0061' && letter <= '\u007a')
  128.             {
  129.                 MessageBox.Show("Можете да въвеждате само букви на български!", "Грешка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  130.                 return;
  131.             }
  132.             if (word.Contains(letter))
  133.             {
  134.                 char[] letters = word.ToCharArray();
  135.                 for (int i = 0; i < letters.Length; i++)
  136.                 {
  137.                     if (letters[i] == letter)
  138.                     {
  139.                         labels[i].Text = letter.ToString();
  140.                     }
  141.                 }
  142.                 foreach (Label l in labels)
  143.                     if (l.Text == "_")
  144.                     {
  145.                         return;
  146.                     }
  147.                     MessageBox.Show("Ти спечели!", "Поздравления!");
  148.                     groupBox2.Enabled = false;
  149.             }
  150.             else
  151.             {
  152.                 MessageBox.Show("Буквата, която написахте, не е в думата.", "Грешно предложение!");
  153.                 label2.Text = label2.Text + " " + letter.ToString() + ",";
  154.                 DrawBodyPart((BodyParts)amount);
  155.                 amount++;
  156.                 if (amount == 9)
  157.                 {
  158.                     MessageBox.Show("Вие загубихте! Думата беше " + word);
  159.                     groupBox2.Enabled = false;
  160.                 }
  161.             }
  162.             textBox1.Text = "";
  163.         }
  164.  
  165.         private void button2_Click(object sender, EventArgs e)
  166.         {
  167.             for(int i = 0; i < textBox2.Text.Length; i++)
  168.             {
  169.                 if (!char.IsLetter(textBox2.Text[i]) || textBox2.Text[i] >= '\u0061' && textBox2.Text[i] <= '\u007a')
  170.                 {
  171.                     MessageBox.Show("Можете да въвеждате само букви на български!", "Грешка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  172.                     return;
  173.                 }
  174.             }
  175.             if (textBox2.Text == word)
  176.             {
  177.                 MessageBox.Show("Ти спечели!", "Поздравления!");
  178.                 groupBox2.Enabled = false;
  179.             }
  180.             else
  181.             {
  182.                 MessageBox.Show("Думата, която написахте, е грешна!");
  183.                 DrawBodyPart((BodyParts)amount);
  184.                 amount++;
  185.                 if (amount == 9)
  186.                 {
  187.                     MessageBox.Show("Вие загубихте! Думата беше " + word);
  188.                     groupBox2.Enabled = false;
  189.                 }
  190.             }
  191.             textBox2.Text = "";
  192.         }
  193.  
  194.         private void redrawButton_Click(object sender, EventArgs e)
  195.         {
  196.             DrawHangManPost();
  197.         }
  198.  
  199.         private void новаИграToolStripMenuItem_Click(object sender, EventArgs e)
  200.         {
  201.             Application.Restart();
  202.         }
  203.  
  204.         private void изходToolStripMenuItem_Click(object sender, EventArgs e)
  205.         {
  206.             Application.Exit();
  207.         }
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment