Advertisement
jovanovski

ВП Лаб8

May 2nd, 2014
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.63 KB | None | 0 0
  1. FORM1----
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using VILab8.Properties;
  12.  
  13. namespace VILab8
  14. {
  15.     public partial class Form1 : Form
  16.     {
  17.         Timer timer;
  18.         Pacman pacman;
  19.         static readonly int TIMER_INTERVAL = 250;
  20.         static readonly int WORLD_WIDTH = 15;
  21.         static readonly int WORLD_HEIGHT = 10;
  22.         Image foodImage;
  23.         bool[][] foodWorld;
  24.  
  25.         public Form1()
  26.         {
  27.             InitializeComponent();
  28.             foodImage = Resources.orange_icon;
  29.             DoubleBuffered = true;
  30.             newGame();
  31.         }
  32.  
  33.         public void newGame()
  34.         {
  35.             pacman = new Pacman();
  36.             this.Width = pacman.radius * 2 * (WORLD_WIDTH + 1);
  37.             this.Height = pacman.radius * 2 * (WORLD_HEIGHT + 1);
  38.             foodWorld = new bool[10][];
  39.             for (int i = 0; i < foodWorld.Length; i++)
  40.             {
  41.                 foodWorld[i] = new bool[15];
  42.                 for (int j = 0; j < foodWorld[i].Length; j++)
  43.                 {
  44.                     foodWorld[i][j] = true;
  45.                 }
  46.             }
  47.  
  48.             timer1.Interval = TIMER_INTERVAL;
  49.             timer1.Enabled = true;
  50.  
  51.         }
  52.  
  53.         private void Form1_Paint(object sender, PaintEventArgs e)
  54.         {
  55.             Graphics g = e.Graphics;
  56.             g.Clear(Color.Black);
  57.             for (int i = 0; i < foodWorld.Length; i++)
  58.             {
  59.                 for (int j = 0; j < foodWorld[i].Length; j++)
  60.                 {
  61.                     if (foodWorld[i][j])
  62.                     {
  63.                         g.DrawImageUnscaled(foodImage, j * pacman.radius * 2 + (pacman.radius * 2 - foodImage.Height) / 2, i * pacman.radius * 2 + (pacman.radius * 2 - foodImage.Width) / 2);
  64.                     }
  65.                 }
  66.             }
  67.             pacman.Draw(g);
  68.         }
  69.  
  70.         private void Form1_KeyUp(object sender, KeyEventArgs e)
  71.         {
  72.             if (e.KeyCode == Keys.Up) {
  73.                 pacman.ChangeDirection(DIRECTION.Up);
  74.             }
  75.             else if (e.KeyCode == Keys.Down)
  76.             {
  77.                 pacman.ChangeDirection(DIRECTION.Down);
  78.             }
  79.             else if (e.KeyCode == Keys.Left)
  80.             {
  81.                 pacman.ChangeDirection(DIRECTION.Left);
  82.             }
  83.             else if (e.KeyCode == Keys.Right)
  84.             {
  85.                 pacman.ChangeDirection(DIRECTION.Right);
  86.             }
  87.  
  88.             Invalidate();
  89.         }
  90.  
  91.         private void timer1_Tick(object sender, EventArgs e)
  92.         {
  93.             pacman.Move();
  94.             if (foodWorld[pacman.positionY][pacman.positionX]) {
  95.                 foodWorld[pacman.positionY][pacman.positionX] = false;
  96.             }
  97.             Invalidate();
  98.         }
  99.     }
  100. }
  101.  
  102.  
  103.  
  104. PACMAN--
  105. using System;
  106. using System.Collections.Generic;
  107. using System.Drawing;
  108. using System.Linq;
  109. using System.Text;
  110. using System.Threading.Tasks;
  111.  
  112. namespace VILab8
  113. {
  114.     enum DIRECTION
  115.     {
  116.         Up,
  117.         Down,
  118.         Left,
  119.         Right
  120.     }
  121.  
  122.     class Pacman
  123.     {
  124.         public int positionX;
  125.         public int positionY;
  126.         public DIRECTION direction;
  127.         public int radius = 20;
  128.         public int speed;
  129.         public bool mouthOpen;
  130.         public SolidBrush color;
  131.  
  132.         public Pacman()
  133.         {
  134.             this.speed = this.radius;
  135.             this.positionX = 7;
  136.             this.positionY = 5;
  137.             this.direction = DIRECTION.Right;
  138.             color = new SolidBrush(Color.Yellow);
  139.             mouthOpen = true;
  140.         }
  141.  
  142.         public void ChangeDirection(DIRECTION direction1)
  143.         {
  144.             this.direction = direction1;
  145.         }
  146.  
  147.         public void Move()
  148.         {
  149.             if (mouthOpen) mouthOpen = false;
  150.             else mouthOpen = true;
  151.  
  152.             if (direction == DIRECTION.Left) {
  153.                 if (positionX > 0)
  154.                 {
  155.                     positionX--;
  156.                 }
  157.                 else {
  158.                     positionX = 14;
  159.                 }
  160.             }
  161.             else if (direction == DIRECTION.Right)
  162.             {
  163.                 if (positionX < 14)
  164.                 {
  165.                     positionX ++;
  166.                 }
  167.                 else
  168.                 {
  169.                     positionX = 0;
  170.                 }
  171.             }
  172.             else if (direction == DIRECTION.Up)
  173.             {
  174.                 if (positionY > 0)
  175.                 {
  176.                     positionY --;
  177.                 }
  178.                 else
  179.                 {
  180.                     positionY = 9;
  181.                 }
  182.             }
  183.             else {
  184.                 if (positionY < 9)
  185.                 {
  186.                     positionY ++;
  187.                 }
  188.                 else
  189.                 {
  190.                     positionY = 0;
  191.                 }
  192.             }
  193.         }
  194.  
  195.         public void Draw(Graphics g)
  196.         {
  197.             if (direction == DIRECTION.Right) {
  198.                 if(mouthOpen)
  199.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2+12, radius, radius, 30, 310);
  200.                 else
  201.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2+12, radius, radius, 0, 360);
  202.             }
  203.             else if (direction == DIRECTION.Left)
  204.             {
  205.                 if (mouthOpen)
  206.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 210, 310);
  207.                 else
  208.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 0, 360);
  209.             }
  210.             else if (direction == DIRECTION.Up)
  211.             {
  212.                 if (mouthOpen)
  213.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 300, 310);
  214.                 else
  215.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 0, 360);
  216.             }
  217.             else if (direction == DIRECTION.Down)
  218.             {
  219.                 if (mouthOpen)
  220.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 120, 310);
  221.                 else
  222.                     g.FillPie(color, positionX * radius * 2 + 15, positionY * radius * 2 + 12, radius, radius, 0, 360);
  223.             }
  224.         }  
  225.  
  226.     }
  227.  
  228.  
  229. }
  230.  
  231. RESOURCES--
  232. http://icons.iconarchive.com/icons/gcds/chinese-new-year/512/orange-icon.png
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement