Суббота, 21 Мая 2022, 16:28

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум игроделов » Записи участника » arthurfok [56]
Результаты поиска
arthurfokДата: Воскресенье, 21 Октября 2012, 21:16 | Сообщение # 21 | Тема: Ищу учителя по яп Сишарп
частый гость
Сейчас нет на сайте
ссылка на Djvu Reader
Этим открой


Сообщение отредактировал arthurfok - Воскресенье, 21 Октября 2012, 21:17
arthurfokДата: Воскресенье, 21 Октября 2012, 21:15 | Сообщение # 22 | Тема: Точка и запятая
частый гость
Сейчас нет на сайте
Так я же уже написал решение ! О_о
if (s.Contains('.'))
s = s.Replace('.', ',');
arthurfokДата: Воскресенье, 21 Октября 2012, 16:18 | Сообщение # 23 | Тема: Ищу учителя по яп Сишарп
частый гость
Сейчас нет на сайте
Читай эти книги, и все будет норм:
Сперва этот:
Книга 1 (Основы)
Потом этот:
Книга 2 (Полное руководство)

После первой книги, вторая прочтешь за макс 3 недели. (т.к. уже многое будешь знать, и быстро освоишь новые тонкости)
В обоих книгах автор очень хорошо все объясняет , как ученику 1 класса.
Читай внимательнее и все поймешь.
И не надо никому платить за обучение ,,, если что то не поймешь из книги, то пиши тут, поможем понять непонятное.
Удачи smile
arthurfokДата: Воскресенье, 21 Октября 2012, 16:06 | Сообщение # 24 | Тема: Точка и запятая
частый гость
Сейчас нет на сайте
Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class SchimbValutar
{
      static void Main()
      {
          double rate, lei, sum;
          string s;

          Console.WriteLine("Введите курс для доллара");
          s = Console.ReadLine();
          if (s.Contains('.'))
              s = s.Replace('.', ',');
          rate = Convert.ToDouble(s);

          Console.WriteLine("Сколько леев вы хотите продать?");
          s = Console.ReadLine();
          if (s.Contains('.'))
              s = s.Replace('.', ',');
          lei = Convert.ToDouble(s);

          sum = lei / rate;
          Console.WriteLine("Вы можете купить " + sum + "$");
      }
}


Вообще то, если в твое число с точкой ( в место запетой) , то Convert.ToDouble() должен выдать вот такой error: Input string was not in a correct format.


Сообщение отредактировал arthurfok - Понедельник, 22 Октября 2012, 15:35
arthurfokДата: Воскресенье, 21 Октября 2012, 15:57 | Сообщение # 25 | Тема: 2д столкновения
частый гость
Сейчас нет на сайте
то есть, если в следующем шаге будет столкновение (например при нажатии Up) , то не пускать чтоб он пошел на верх, а только в другие направления??
Я правильно понял?
arthurfokДата: Суббота, 20 Октября 2012, 22:59 | Сообщение # 26 | Тема: Метод Texture.GetData()
частый гость
Сейчас нет на сайте
это можно вычислить smile
arthurfokДата: Суббота, 20 Октября 2012, 22:52 | Сообщение # 27 | Тема: 2д столкновения
частый гость
Сейчас нет на сайте
допустим , функция проверяющая столкновения:bool Intersects(Rectangle rect1, Color[] data1, Rectangle rect2, Color[] data2).
Где rect1 и data1 - это прямоугольник и массив цветов первого обьекта с позицией NextPos,, а rect2 и data2 - второго.
Тогда..

Code

if(!Intersects(Hero.rect,Hero.Data,Pulya.rect,Pulya.Data))  //То есть, если столкновении нет, то:
{
       Hero.POS=Hero.NextPos;
       // Pulya.POS=Pulya.NextPos;
       //...
       //...
}


Что то в этом роде.

Добавлено (20.10.2012, 22:52)
---------------------------------------------
Вот сама функция:

Code

bool Intersects(Rectangle rect1, Color[] data1, Rectangle rect2, Color[] data2)
         {
             int top = Math.Max(rect1.Top,rect2.Top);
             int bottom = Math.Min(rect1.Bottom, rect2.Bottom);
             int left = Math.Max(rect1.Left, rect2.Left);
             int right = Math.Min(rect1.Right, rect2.Right);

             for (int y = top; y < bottom; y++)
             {
                 for (int x = left; x < right; x++)
                 { http://gcup.ru/forum/66-27176-1#top
                     Color color1=data1[(x-rect1.Left)+(y-rect1.Top)*rect1.Width];
                     Color color2 = data2[(x - rect2.Left) + (y - rect2.Top) * rect2.Width];
                     if (color1.A != 0 && color2.A != 0)
                         return true;
                 }
             }
             return false;           
         }


Получение массива цветов:
Code

             Hero.Data = new Color[sprite.Width * sprite.Height];
             Hero.Sprite.GetData(Hero.Data);
arthurfokДата: Суббота, 20 Октября 2012, 22:34 | Сообщение # 28 | Тема: Метод Texture.GetData()
частый гость
Сейчас нет на сайте
Да , я у меня тоже этот алгоритм )))
arthurfokДата: Четверг, 18 Октября 2012, 23:30 | Сообщение # 29 | Тема: Метод Texture.GetData()
частый гость
Сейчас нет на сайте
Я нашел решение))
Разделяем наш спрайт-шит на отдельные спрайты:
Code

public Texture2D[] Split(Texture2D original, int partWidth, int partHeight, out int xCount, out int yCount)
     {
         yCount = original.Height / partHeight;//The number of textures in each horizontal row
         xCount = original.Width / partWidth;//The number of textures in each vertical column
         Texture2D[] r = new Texture2D[xCount * yCount];//Number of parts = (area of original) / (area of each part).
         int dataPerPart = partWidth * partHeight;//Number of pixels in each of the split parts

         //Get the pixel data from the original texture:
         Color[] originalData = new Color[original.Width * original.Height];
         original.GetData<Color>(originalData);

         int index = 0;
         for (int y = 0; y < yCount * partHeight; y += partHeight)
             for (int x = 0; x < xCount * partWidth; x += partWidth)
             {
                 //The texture at coordinate {x, y} from the top-left of the original texture
                 Texture2D part = new Texture2D(original.GraphicsDevice, partWidth, partHeight);
                 //The data for part
                 Color[] partData = new Color[dataPerPart];

                 //Fill the part data with colors from the original texture
                 for (int py = 0; py < partHeight; py++)
                     for (int px = 0; px < partWidth; px++)
                     {
                         int partIndex = px + py * partWidth;
                         //If a part goes outside of the source texture, then fill the overlapping part with Color.Transparent
                         if (y + py >= original.Height || x + px >= original.Width)
                             partData[partIndex] = Color.Transparent;
                         else
                             partData[partIndex] = originalData[(x + px) + (y + py) * original.Width];
                     }

                 //Fill the part with the extracted data
                 part.SetData<Color>(partData);
                 //Stick the part in the return array:                     
                 r[index++] = part;
             }
         //Return the array of parts.
         return r;
     }


Использование:
Code

Texture2D spriteSheet=Content.Load<Texture2D>("Run");
int xCount,yCount;
Texture2d[] parts = Split(spriteSheet, 10, 10, out xCount, out yCount);
///
///...
///
parts[frame].GetData(runnerData);

где frame - текущий кадр.
arthurfokДата: Четверг, 18 Октября 2012, 19:29 | Сообщение # 30 | Тема: Метод Texture.GetData()
частый гость
Сейчас нет на сайте
Есть sprite-sheet.


если сделать так:
Code

Rectangle rec = new Rectangle((int)pos.X, (int)pos.Y, sprite.Width, sprite.Height);
Corol[] runnerData = new Color[rec.Width * rec.Height];
sprite.GetData(runnerData);

То в runnerData будут ВСЕ пиксели данного спрайта.
Теперь вопрос,, как сделать так, что бы в runnerData были только пиксели определенного "кадра" ??

П.С. я пытаюсь сделать per pixel collision detection для анимированного спрайта (т.к. мой персонаж бегает :)) )
arthurfokДата: Воскресенье, 14 Октября 2012, 13:25 | Сообщение # 31 | Тема: Анимация бега из рисованного персонажа
частый гость
Сейчас нет на сайте
Дело в том, что я не могу найти спрайт-щит бега стикмана sad
Было бы хорошо, если бы кто смог нарисовать анимацию бега стикмена (в прозрачном или белом фоне) , я сам смогу из анимации сделать спрайт шит.
arthurfokДата: Суббота, 13 Октября 2012, 22:02 | Сообщение # 32 | Тема: Анимация бега из рисованного персонажа
частый гость
Сейчас нет на сайте
дело в том , что в игре графики , так сказать , не будет )))
будет черно белая игра,, будет лишь линя, и барьеры в виде кубиков.
Мне только нужен, чтобы был бегающий персонаж =)
arthurfokДата: Суббота, 13 Октября 2012, 10:34 | Сообщение # 33 | Тема: Анимация бега из рисованного персонажа
частый гость
Сейчас нет на сайте
Здравствуйте.
Я пишу маленькую игру , в котором персонаж должен бегать и прыгать, и для этого мне нужны спрайты персонажа (спрайт-шит бега).
Я программист, и не владею знаниями рисования и анимации, по этому решил обратится к вам.
Пожалуйста , сделайте из этого рисунка спрайт-шит бега (или просто png файлы кадр,, склеить их в одну я умею).
Вот рисунок:

Я попробовал сам сделать, но вышло как то не айс )))
Вот:

Если кто то сможет сделать нормальную анимацию , то пожалуйста пишите в ЛС.
Заранее Спасибо
arthurfokДата: Вторник, 28 Августа 2012, 17:57 | Сообщение # 34 | Тема: Снова Я ))) (и снова про XNA)
частый гость
Сейчас нет на сайте
Stalker_Shooter, ((((
arthurfokДата: Вторник, 28 Августа 2012, 11:04 | Сообщение # 35 | Тема: Снова Я ))) (и снова про XNA)
частый гость
Сейчас нет на сайте
Stalker_Shooter, хорошо, буду ждать. заранее спасибо.
VolkodavAD, да ты прав, искажение есть (написал Vector2 ,чтоб передать в аргументы в spritebatch.Draw() ,, scalxe.X -это масштаб по оси Х, а scale.Y - по оси Y)


Сообщение отредактировал arthurfok - Вторник, 28 Августа 2012, 11:04
arthurfokДата: Суббота, 25 Августа 2012, 16:57 | Сообщение # 36 | Тема: Снова Я ))) (и снова про XNA)
частый гость
Сейчас нет на сайте
можно ли сделать так, что бы программа (игра) автоматически изменила все свои размеры под любой монитор (под любое разрешение) в том числе и окна WinForms (которые я добавил в проект) ???
Например у меня разрешение стоит 1280*1024 и я пишу программу под свой монитор (размеры текстур и т.д.) и что бы она отображалась на других мониторах (скажем 1024*768) в таком же масштабе как и у меня , я сделал так:
в Vector2 scale считал scale.X и scale.Y в зависимости от разрешения экрана и
при рисовании в spriteBatch.Draw передал аргумент scale ,,, но т.к. у меня до фига текстур, которых надо рисовать, то таким образом придется у всех передать этот scale.
Вот,,,, можно ли как нибудь это автоматизировать??
например в конструкторе Game1 написать что то, после чего все сделалось автоматически , или как то еще? (и вообще как все это делают в написании игр?! )

Спасибо


Сообщение отредактировал arthurfok - Суббота, 25 Августа 2012, 18:10
arthurfokДата: Вторник, 21 Августа 2012, 13:54 | Сообщение # 37 | Тема: Позиция окна игры
частый гость
Сейчас нет на сайте
VolkodavAD,
а почему , когда это делаю не в функции Initialize, а в конструкторе Game1, то не выходит?
почему именно Initialize?
arthurfokДата: Воскресенье, 19 Августа 2012, 10:34 | Сообщение # 38 | Тема: Сокеты??
частый гость
Сейчас нет на сайте
_pDirectDevice, спасибо )))
Saitei,
я пишу 2D стрелялку , то есть будут передаваться позиция(X,Y),угл, сообщение что персонаж стреляет, и т.д...
arthurfokДата: Воскресенье, 19 Августа 2012, 00:56 | Сообщение # 39 | Тема: Сокеты??
частый гость
Сейчас нет на сайте
Saitei, а что ты предлагаешь ? )
arthurfokДата: Пятница, 17 Августа 2012, 23:20 | Сообщение # 40 | Тема: Сокеты??
частый гость
Сейчас нет на сайте
Kamskii, шутка просто супер )))))))
а про сокеты??
вообще сетевые игры делаются UDP сокетами или TCP ?))
Форум игроделов » Записи участника » arthurfok [56]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг