[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Технический форум » Закрытые темы » Как сделать игру на c# ? (Пытаюсь сделать игру в стиле GTA)
Как сделать игру на c# ?
wmysterio
Администраторы
Скриптер
15.07.13 20:29
Offline
В общем пытаюсь сделать что-то похожее на игру wink Сюда буду кидать её исходники и скрины. Может кому-то они пригодятся wink Пока что готово только меню, и то функционально работает только 1 пункт "Выход" и само перемещение по нему wink Вот скрин:
Исходники:
Код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MinGTA {
          // Базовый класс - запуск игры//
          public partial class Main : Form {
              public Main() {
                  InitializeComponent();
                  this.SuspendLayout();
                  Menu Global = new Menu();
                  Global.Display(this);
              }
          }

          // Класс меню. Пакет функций для работы с меню //
          public class Menu{
              public void Display(Form Current) {
                  Current.BackColor = Color.Black;
                  Label[] Menu = new Label[5];
                  Label Line = new Label();
                  int[] MenuPositionText = new int[5];
                  string[] MenuText = { "Новая игра", "Загрузить", "Настройки", "О авторе", "Выход" };
                  Color MunuColor = Color.White;
                  Font MenuFont = new Font("Verdana", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                  Line.Height = 2;
                  Line.Width = 1280;
                  Line.Location = new Point(0, 360);
                  Line.BorderStyle = BorderStyle.Fixed3D;
                  Current.Controls.Add(Line);

                  for (int index = 0, PosX = 75; index < 5; index++, PosX += 128) {
                      Menu[index]= new Label();
                      Menu[index].Location = new Point(PosX, 390);
                      Menu[index].Font = MenuFont;
                      Menu[index].ForeColor = MunuColor;
                      MenuPositionText[index]= PosX;
                      Menu[index].Text = MenuText[index];
                      Current.Controls.Add(Menu[index]);           
                  }

                  Menu[0].ForeColor = Color.Yellow;
                  Menu[0].MouseClick += (s, e) => InvertColorTextInMenu(Menu, 0, MenuPositionText[0]);
                  Menu[1].MouseClick += (s, e) => InvertColorTextInMenu(Menu, 1, MenuPositionText[1]);
                  Menu[2].MouseClick += (s, e) => InvertColorTextInMenu(Menu, 2, MenuPositionText[2]);
                  Menu[3].MouseClick += (s, e) => InvertColorTextInMenu(Menu, 3, MenuPositionText[3]);
                  Menu[4].MouseClick += (s, e) => InvertColorTextInMenu(Menu, 4, MenuPositionText[4]);
                  Menu[4].DoubleClick += (s, e) => Application.Exit();

              }

              private void InvertColorTextInMenu(Label[] ItemMenu, int Index, int PositionX){
                  ItemMenu[Index].Location = new Point(PositionX, 390);
                  ItemMenu[Index].ForeColor = Color.Yellow;
                  for (int TempIndex = 0; TempIndex < 5; TempIndex++) {
                      if (TempIndex != Index) {
                          ItemMenu[TempIndex].ForeColor = Color.White;
                      }
                  }           
              }

          }

// Конец //
}
Прикрепления: 7474712.png(7Kb)

wmysterio
Администраторы
Скриптер
16.07.13 11:54
Offline
Есть продолжение smile Добавил 2 класса - Maps и Menu для обработки карты и главного меню. Вот собственно исходники:
Код
using System;
using System.Drawing;
using System.Windows.Forms;

namespace MinGTA {
          // Базовый класс - запуск игры//
          public partial class Main : Form {
              public Main() {
                  InitializeComponent();
                  this.SuspendLayout();
                  Menu Global = new Menu();
                  Global.Display(this);
              }
          }
}
Класс меню:
Код
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Media;       

// Пакет функций для работы с меню //
public class Menu {
          public SoundPlayer MenuSelectSound = new SoundPlayer();
          public void Display(Form Current) {
              Current.BackColor = Color.Black;            
              MenuSelectSound.SoundLocation = Application.StartupPath + "\\Sounds\\Click.wav";
              Label[] FirstMenu = new Label[6];
              int[] MenuPositionText = new int[5];
              string[] MenuText = { "Новая игра", "Загрузить", "Настройки", "О авторе", "Выход" };
              Color MunuColor = Color.White;
              Font MenuFont = new Font("Verdana", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
              FirstMenu[5] = new Label();
              FirstMenu[5].Height = 2;
              FirstMenu[5].Width = 1280;
              FirstMenu[5].Location = new Point(0, 360);
              FirstMenu[5].BorderStyle = BorderStyle.Fixed3D;
              Current.Controls.Add(FirstMenu[5]);

              for (int index = 0, PosX = 75; index < 5; index++, PosX += 128) {
                  FirstMenu[index]= new Label();
                  FirstMenu[index].Location = new Point(PosX, 390);
                  FirstMenu[index].Font = MenuFont;
                  FirstMenu[index].ForeColor = MunuColor;
                  MenuPositionText[index]= PosX;
                  FirstMenu[index].Text = MenuText[index];
                  Current.Controls.Add(FirstMenu[index]);
              }
              FirstMenu[0].ForeColor = Color.Yellow;
              FirstMenu[0].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 0, MenuPositionText[0]);
              FirstMenu[1].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 1, MenuPositionText[1]);
              FirstMenu[2].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 2, MenuPositionText[2]);
              FirstMenu[3].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 3, MenuPositionText[3]);
              FirstMenu[4].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 4, MenuPositionText[4]);
              FirstMenu[0].MouseClick += (s, e) => PlaySoundSelectedItemMenu();
              FirstMenu[1].MouseClick += (s, e) => PlaySoundSelectedItemMenu();
              FirstMenu[2].MouseClick += (s, e) => PlaySoundSelectedItemMenu();
              FirstMenu[3].MouseClick += (s, e) => PlaySoundSelectedItemMenu();
              FirstMenu[4].MouseClick += (s, e) => Application.Exit();
              FirstMenu[0].MouseClick += (s, e) => RunGameAndHideMenu(Current, FirstMenu);              
          }

          private void PlaySoundSelectedItemMenu() {
              MenuSelectSound.Play();
          }

          private void InvertColorTextInMenu(Label[] ItemMenu, int Index, int PositionX) {
              ItemMenu[Index].Location = new Point(PositionX, 390);
              ItemMenu[Index].ForeColor = Color.Yellow;            
              for (int TempIndex = 0; TempIndex < 5; TempIndex++) {
                  if (TempIndex != Index) {
                      ItemMenu[TempIndex].ForeColor = Color.White;
                  }
              }
          }

          private void RunGameAndHideMenu(Form Current, Label[] Labels) {
              Maps Location = new Maps();
              foreach (Label Temp in Labels) {
                  Current.Controls.Remove(Temp);
              }
              Location.Load(Current, "Level0.bmp");
          }
}
Класс карты:
Код
using System;
using System.Windows.Forms;
using System.Drawing;

// Пакет функций для работы с картой //
public class Maps {
        public PictureBox CurrentMap = new PictureBox();
        public string PathMap = Application.StartupPath;

        public void Load(Form Current, string Name) {
            Name = PathMap + "\\Maps\\" + Name;
            CurrentMap.Load(Name);
            CurrentMap.Size = new System.Drawing.Size(3000, 3000);
            CurrentMap.Location = new Point(-1500, -1500);
            Current.Controls.Add(CurrentMap);
            Current.KeyDown += new System.Windows.Forms.KeyEventHandler(PlayerKeyPressed);
        }

        private void PlayerKeyPressed(object sender, KeyEventArgs e) {
            Point Pos = CurrentMap.Location;
            int PlayerPosX = 0, PLayerPosY = 0;
            if (e.KeyCode == Keys.NumPad8) {
                PLayerPosY = 1;
             } else if (e.KeyCode == Keys.NumPad2) {
                PLayerPosY = -1;
            } else if (e.KeyCode == Keys.NumPad4) {
                PlayerPosX += 1;
            } else if (e.KeyCode == Keys.NumPad6) {
                PlayerPosX = -1;
            } else if (e.KeyCode == Keys.NumPad7) {
                PLayerPosY = 1;
                PlayerPosX = 1;
            } else if (e.KeyCode == Keys.NumPad9) {
                PLayerPosY = 1;
                PlayerPosX = -1;
            } else if (e.KeyCode == Keys.NumPad1) {
                PLayerPosY = -1;
                PlayerPosX = 1;
            } else if (e.KeyCode == Keys.NumPad3) {
                PLayerPosY = -1;
                PlayerPosX = -1;            
            }
            Pos.Y += PLayerPosY;
            Pos.X += PlayerPosX;   
            CurrentMap.Location = Pos;
        }
}
Теперь при нажатии кнопки "Новая игра", программа подгружает карту с папки Maps и выводит её на экран, после чего можно двигаться по этой карте, нажав 1,2,3,4,6,7,8,9 на дополнительной клавиатуре.

Игра будет в 2D-формате. Вот так выглядит карта:

Я пока не сидел над картой, так что поставил обычный скрин с GTA SA
Отредактировал KiLLeR96 - Вторник, 16.07.13, 22:52
Прикрепления: 4319303.png(317Kb)

Yurko_UA
Модераторы
Модератор
16.07.13 20:21
Offline
Хм... Есть смысл всерьез занятся шарпом

wmysterio
Администраторы
Скриптер
16.07.13 20:53
Offline
Цитата (Yurko_UA)
Есть смысл всерьез занятся шарпом
Есть смысл заняться любым ЯП, если действительно интересно. На шарпе проще это реализовать.
----------------------------------------------------
Изменил класс Maps. Добавил проверки, что бы будущий игрок не залез дальше карты:
Код
        if ((Pos.X + PlayerPosX) == 0 || -2520 == (Pos.X + PlayerPosX)) {
             return;
         }
         if ((Pos.Y + PLayerPosY) == 0 || -2520 == (Pos.Y + PLayerPosY)) {
             return;
         }

wmysterio
Администраторы
Скриптер
16.07.13 22:41
Offline
Добавил новый класс Player:
Код
using System;
using System.Windows.Forms;
using System.Drawing;

// Пакет функций для работы с игроком //
public class Player {
       public PictureBox PlayerIcon = new PictureBox();

       public struct PlayerActor {
           public int Healt;
           public int Armour;
           public int Money;
           public int WantedLevel;
           public Point Position;
       }

       public void Init(Form Current, string MapName) {
           PlayerActor Character;
           Character.Healt = 100;
           Character.Armour = 0;
           string Path = Application.StartupPath;
           string PlayerNameIcon = Path + "\\Images\\Player.gif";
           PlayerIcon.Load(PlayerNameIcon);
           PlayerIcon.Size = new System.Drawing.Size(32, 32);
           PlayerIcon.Location = new Point(292, 218);
           Label PlayerHelth = new Label();
           Label PlayerArmour = new Label();
           PlayerHelth.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));         
           PlayerHelth.ForeColor = System.Drawing.Color.Crimson;
           PlayerHelth.Location = new System.Drawing.Point(530, 25);
           PlayerArmour.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
           PlayerArmour.ForeColor = System.Drawing.Color.CornflowerBlue;
           PlayerArmour.Location = new System.Drawing.Point(574, 25);
           PlayerHelth.Text = Character.Healt.ToString();
           PlayerArmour.Text = Character.Armour.ToString();
           Current.Controls.Add(PlayerIcon);
           Current.Controls.Add(PlayerArmour);
           Current.Controls.Add(PlayerHelth);
           Maps Location = new Maps();
           Location.Load(Current, MapName);    
       }
}
Игра в данный момент такая - видео:

wmysterio
Администраторы
Скриптер
18.07.13 19:39
Offline
Добавил новый класс - Animation, позволяющий оживить игрока:
Код
using System;
using System.Windows.Forms;
using System.Drawing;

// Пакет функций для работы с анимацией //
public class Animations {
      public PictureBox[] AnimActor = new PictureBox[8];
      public string Path = Application.StartupPath;
      public const int FaceToMonitor_LN = 0;
      public const int FaceToMonitor_RN = 1;
      public const int FaceOutMonitor_LN = 2;
      public const int FaceOutMonitor_RN = 3;
      public const int FaceLeft_RN = 4;
      public const int FaceLeft_LN = 5;
      public const int FaceRight_RN = 6;
      public const int FaceRight_LN = 7;    

      public Animations(Form Current, string AninName) {
          AninName = Path + "\\Images\\Animation\\" + AninName;
          AnimActor[FaceToMonitor_LN] = new PictureBox();

          for (int index = 0; index < 8; index++) {
              AnimActor[index]= new PictureBox();
              AnimActor[index].Size = new System.Drawing.Size(32, 32);
              AnimActor[index].Location = new Point(292, 218);
          }

          AnimActor[FaceToMonitor_LN].Load(AninName + "\\FaceToMonitor_LN.png");
          AnimActor[FaceToMonitor_RN].Load(AninName + "\\FaceToMonitor_RN.png");
          AnimActor[FaceOutMonitor_LN].Load(AninName + "\\FaceOutMonitor_LN.png");
          AnimActor[FaceOutMonitor_RN].Load(AninName + "\\FaceOutMonitor_RN.png");
          AnimActor[FaceLeft_RN].Load(AninName + "\\FaceLeft_RN.png");
          AnimActor[FaceLeft_LN].Load(AninName + "\\FaceLeft_LN.png");
          AnimActor[FaceRight_RN].Load(AninName + "\\FaceRight_RN.png");
          AnimActor[FaceRight_LN].Load(AninName + "\\FaceRight_LN.png");

          for (int index = 1; index < 8; index++ ) {
              AnimActor[index].Visible = false;
          }

          Current.Controls.Add(AnimActor[FaceToMonitor_LN]);
          Current.Controls.Add(AnimActor[FaceToMonitor_RN]);
          Current.Controls.Add(AnimActor[FaceOutMonitor_LN]);
          Current.Controls.Add(AnimActor[FaceOutMonitor_RN]);
          Current.Controls.Add(AnimActor[FaceLeft_RN]);
          Current.Controls.Add(AnimActor[FaceLeft_LN]);
          Current.Controls.Add(AnimActor[FaceRight_RN]);
          Current.Controls.Add(AnimActor[FaceRight_LN]);
          Current.KeyDown += new System.Windows.Forms.KeyEventHandler(GetCurrentKey);
      }

      private void GetCurrentKey(object sender, KeyEventArgs e) {
          if (e.KeyCode == Keys.NumPad8) {
              Perform(FaceOutMonitor_RN);
          }
          if (e.KeyCode == Keys.NumPad2) {
              Perform(FaceToMonitor_LN);
          }   
          if (e.KeyCode == Keys.NumPad4 || e.KeyCode == Keys.NumPad7 || e.KeyCode == Keys.NumPad1) {
              Perform(FaceLeft_LN);   
          }
          if (e.KeyCode == Keys.NumPad6 || e.KeyCode == Keys.NumPad9 || e.KeyCode == Keys.NumPad3) {
              Perform(FaceRight_LN);
          }   
      }

      public void Perform(int IndexAnim) {
          for (int index = 0; index < 8; index++) {
              if (IndexAnim == index) {
                  AnimActor[index].Visible = true;      
              } else AnimActor[index].Visible = false;
          }         
      }
}
Естественно самих анимаций у меня нет. В место них пока выступают самодельные картинки. Видео пока добавлять не буду, ограничусь картинкой:

Теперь при нажатии соответствующей клавиши игрок будет выполнять нужные действия.

По сути наш игрок не двигается, а только имитирует движение. Двигается сама карта.

Мимо этого был добавлен хад с изображением игрока, цвет которого будет зависеть от к-ва жизни игрока.
Прикрепления: 1204957.png(182Kb)

SanKing
Друзья
19.07.13 09:45
Offline
Ух ты, здравая идея!

Vital
Друзья
Скриптер
19.07.13 18:56
Offline
Здорово, удачи в разработке! Кстати, картинки рисуешь неплохо, у меня вообще почти нулевые навыки рисования, у меня максимум в Paint.NET может получиться какой-то робот smile
2109: create_special_actor $VITAL in_front_of_computer

wmysterio
Администраторы
Скриптер
21.07.13 15:24
Offline
Vital, с рисованием в графических редакторах у меня тоже близко к нуля. Я так заметил, мы очень похожи smile ------------------------------------------------
Добавил новый класс - Hud для работы с соответствующими имени компонентами:

 using System; using System.Windows.Forms; using System.Drawing; // Пакет функций для работы с интерфейсом игрока // public class Hud { public PictureBox PlayerIcon = new PictureBox(); public Hud(Form Current, Player MainPlayer) { string Path = Application.StartupPath; string PlayerNameIcon = Path + "\\Images\\Player.png"; PlayerIcon.Load(PlayerNameIcon); PlayerIcon.BorderStyle = BorderStyle.FixedSingle; PlayerIcon.Size = new System.Drawing.Size(64, 64); PlayerIcon.Location = new Point(548, 12); Current.Controls.Add(PlayerIcon); } public void Enable(bool Showing) { if (Showing) { PlayerIcon.Visible = Showing; } else { PlayerIcon.Visible = Showing; } } public bool Enable() { return PlayerIcon.Visible; } }
Класс пока умеет прятать/показывать интерфейс. Проверять включён ли он. ------------------------------------ Все исходники полностью переделаны под новые классы: базовый класс:
using System; using System.Drawing; using System.Windows.Forms; namespace MinGTA { // Базовый класс - запуск игры// public partial class Main : Form { public Main() { InitializeComponent(); this.SuspendLayout(); Menu Global = new Menu(this); } } }
Класс меню:
using System; using System.Windows.Forms; using System.Drawing; using System.Media; // Пакет функций для работы с меню // public class Menu { public SoundPlayer MenuSelectSound = new SoundPlayer(); public Menu(Form Current) { Current.BackColor = Color.Black; MenuSelectSound.SoundLocation = Application.StartupPath + "\\Sounds\\Click.wav"; Label[] FirstMenu = new Label[6]; int[] MenuPositionText = new int[5]; string[] MenuText = { "Новая игра", "Загрузить", "Настройки", "О авторе", "Выход" }; Color MunuColor = Color.White; Font MenuFont = new Font("Verdana", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); FirstMenu[5] = new Label(); FirstMenu[5].Height = 2; FirstMenu[5].Width = 1280; FirstMenu[5].Location = new Point(0, 360); FirstMenu[5].BorderStyle = BorderStyle.Fixed3D; Current.Controls.Add(FirstMenu[5]); for (int index = 0, PosX = 25; index < 5; index++, PosX += 128) { FirstMenu [index]= new Label(); FirstMenu[index].Location = new Point(PosX, 390); FirstMenu[index].Font = MenuFont; FirstMenu[index].ForeColor = MunuColor; MenuPositionText [index]= PosX; FirstMenu[index].Text = MenuText[index]; Current.Controls.Add(FirstMenu[index]); } FirstMenu[0].ForeColor = Color.Yellow; FirstMenu[0].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 0, MenuPositionText[0]); FirstMenu[1].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 1, MenuPositionText[1]); FirstMenu[2].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 2, MenuPositionText[2]); FirstMenu[3].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 3, MenuPositionText[3]); FirstMenu[4].MouseMove += (s, e) => InvertColorTextInMenu(FirstMenu, 4, MenuPositionText[4]); FirstMenu[0].MouseClick += (s, e) => PlaySoundSelectedItemMenu(); FirstMenu[1].MouseClick += (s, e) => PlaySoundSelectedItemMenu(); FirstMenu[2].MouseClick += (s, e) => PlaySoundSelectedItemMenu(); FirstMenu[3].MouseClick += (s, e) => PlaySoundSelectedItemMenu(); FirstMenu[4].MouseClick += (s, e) => Application.Exit(); FirstMenu[0].MouseClick += (s, e) => RunGameAndHideMenu(Current, FirstMenu); } private void PlaySoundSelectedItemMenu() { MenuSelectSound.Play(); } private void InvertColorTextInMenu(Label[] ItemMenu, int Index, int PositionX) { ItemMenu[Index].Location = new Point(PositionX, 390); ItemMenu[Index].ForeColor = Color.Yellow; for (int TempIndex = 0; TempIndex < 5; TempIndex++) { if (TempIndex != Index) { ItemMenu[TempIndex].ForeColor = Color.White; } } } private void RunGameAndHideMenu(Form Current, Label[] Labels) { foreach (Label Temp in Labels) { Current.Controls.Remove(Temp); } Player HitChar = new Player(Current, "Level0.bmp"); } }
Класс игрока:
using System; using System.Windows.Forms; using System.Drawing; // Пакет функций для работы с игроком // public class Player { public PictureBox PlayerIcon = new PictureBox(); public PictureBox ObjectLocation = new PictureBox(); public int Healt = 255; public int Money; public int WantedLevel; public Player(Form Current, string MapName) { Hud PlayerHud = new Hud(Current, this); Animations PlayerAnim = new Animations(Current, "Player"); Maps ObjectLocation = new Maps(Current, MapName); } public void Posiotion(Point NewPos) { ObjectLocation.Location = NewPos; } public Point Posiotion() { return ObjectLocation.Location; } }
Класс карты:
using System; using System.Windows.Forms; using System.Drawing; // Пакет функций для работы с картой // public class Maps { public PictureBox CurrentMap = new PictureBox(); public string PathMap = Application.StartupPath; public Maps(Form Current, string Name) { Name = PathMap + "\\Maps\\" + Name; CurrentMap.Load(Name); CurrentMap.Size = new System.Drawing.Size(3000, 3000); CurrentMap.Location = new Point(-1500, -1500); Current.Controls.Add(CurrentMap); Current.KeyDown += new System.Windows.Forms.KeyEventHandler(PlayerKeyPressed); } private void PlayerKeyPressed(object sender, KeyEventArgs e) { Point Pos = CurrentMap.Location; int PlayerPosX = 0, PLayerPosY = 0; if (e.KeyCode == Keys.NumPad8) { PLayerPosY = 1; } else if (e.KeyCode == Keys.NumPad2) { PLayerPosY = -1; } else if (e.KeyCode == Keys.NumPad4) { PlayerPosX += 1; } else if (e.KeyCode == Keys.NumPad6) { PlayerPosX = -1; } else if (e.KeyCode == Keys.NumPad7) { PLayerPosY = 1; PlayerPosX = 1; } else if (e.KeyCode == Keys.NumPad9) { PLayerPosY = 1; PlayerPosX = -1; } else if (e.KeyCode == Keys.NumPad1) { PLayerPosY = -1; PlayerPosX = 1; } else if (e.KeyCode == Keys.NumPad3) { PLayerPosY = -1; PlayerPosX = -1; } if ((Pos.X + PlayerPosX) == 0 || -2520 == (Pos.X + PlayerPosX)) { return; } if ((Pos.Y + PLayerPosY) == 0 || -2520 == (Pos.Y + PLayerPosY)) { return; } Pos.X += PlayerPosX; Pos.Y += PLayerPosY; CurrentMap.Location = Pos; } }
Класс анимации:
using System; using System.Windows.Forms; using System.Drawing; // Пакет функций для работы с анимацией // public class Animations { public PictureBox[] AnimActor = new PictureBox[8]; public string Path = Application.StartupPath; public const int FaceToMonitor = 0; public const int FaceOutMonitor = 1; public const int FaceLeft = 2; public const int FaceRight = 3; public Animations(Form Current, string AninName) { AninName = Path + "\\Images\\Animation\\" + AninName; AnimActor [FaceToMonitor]= new PictureBox(); for (int index = 0; index < 4; index++) { AnimActor [index]= new PictureBox(); AnimActor[index].Size = new System.Drawing.Size(32, 32); AnimActor[index].Location = new Point(292, 218); } AnimActor[FaceToMonitor].Load(AninName + "\\FaceToMonitor.gif"); AnimActor[FaceOutMonitor].Load(AninName + "\\FaceOutMonitor.gif"); AnimActor[FaceLeft].Load(AninName + "\\FaceLeft.gif"); AnimActor[FaceRight].Load(AninName + "\\FaceRight.gif"); for (int index = 1; index < 4; index++ ) { AnimActor[index].Visible = false; } Current.Controls.Add(AnimActor[FaceToMonitor]); Current.Controls.Add(AnimActor[FaceOutMonitor]); Current.Controls.Add(AnimActor[FaceLeft]); Current.Controls.Add(AnimActor[FaceRight]); Current.KeyDown += new System.Windows.Forms.KeyEventHandler(GetCurrentKey); } private void GetCurrentKey(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.NumPad8) { Perform(FaceOutMonitor); } else if (e.KeyCode == Keys.NumPad2) { Perform(FaceToMonitor); } else if (e.KeyCode == Keys.NumPad4 || e.KeyCode == Keys.NumPad7 || e.KeyCode == Keys.NumPad1) { Perform(FaceLeft); } else if (e.KeyCode == Keys.NumPad6 || e.KeyCode == Keys.NumPad9 || e.KeyCode == Keys.NumPad3) { Perform(FaceRight); } } public void Perform(int IndexAnim) { for (int index = 0; index < 4; index++) { if (IndexAnim == index) { AnimActor[index].Visible = true; } else AnimActor[index].Visible = false; } } }
Класс хад'а указан в начале сообщения.

Форум » Технический форум » Закрытые темы » Как сделать игру на c# ? (Пытаюсь сделать игру в стиле GTA)
Страница 1 из 11
Поиск: