Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 03.12.2012, 20:26   #196
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

ну а так-то я ничего не перепутал? Все условия верно записаны?
(Offline)
 
Ответить с цитированием
Старый 03.12.2012, 20:40   #197
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Сообщение от wppt Посмотреть сообщение
ну а так-то я ничего не перепутал? Все условия верно записаны?
да вроде правильно, кроме развечто лишнего
colors[0] != newC 
(Offline)
 
Ответить с цитированием
Старый 03.12.2012, 22:13   #198
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

а может дело в том, что метод запускается именно по нажатию кнопки мыши? Я пробовал зажать и поводи по экрану - рисует нужным цветом

А вот в load случайно с самого начала rendertarget разве не полностью пуст? - Проверил, так и есть! Что же делать?
(Offline)
 
Ответить с цитированием
Старый 06.12.2012, 04:25   #199
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Повторюсь, без полного кода ничем не смогу помочь. А телепатически- ты рисуешь текстуру только когда мышка зажата.
(Offline)
 
Ответить с цитированием
Старый 06.12.2012, 17:49   #200
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

вот ты ухватился за этот код! Сейчас будет все


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.IO;
using System.Threading.Tasks;
using System.Threading;

namespace WindowsGame4
{
    public class mygam : Microsoft.Xna.Framework.Game
    {
        int overload;
        float camscale = 1.5f;
        RenderTarget2D mapr;
        GraphicsDevice graphdev;
        GraphicsDeviceManager myGraphics;
        GraphicsProfile graphprof;
        KeyboardState myKeyboardState;
        MouseState mymouse;
        ContentManager Content;
        
        SpriteBatch batch1;
        SpriteBatch batch2;
        
        static SpriteFont main;
        Random rand;

        TimeSpan eltime = TimeSpan.Zero;
        
        Color[] dat;
        Color[] mapTextData;
        
        Drawing Map;
        
        Camera cam;

        Matrix Camp;
        Rectangle mapRect;
        Vector2 vel;
        
        int FPC = 0;
        int FPS = 0;
        
        World world = new World();
        
        public mygam()
        {

            Window.Title = "myGam";
            Window.AllowUserResizing = true;
            
            myGraphics = new GraphicsDeviceManager(this); 
            myGraphics.PreferMultiSampling = true;
            myGraphics.SynchronizeWithVerticalRetrace = false;
            myGraphics.PreferredBackBufferWidth = 800;
            myGraphics.PreferredBackBufferHeight = 600;
         
            Content  = new ContentManager(Services);
            graphprof = new GraphicsProfile();
            rand = new Random();
            cam = new Camera(new Vector2(0,0));
            dat = new Color[1] { new Color(0,0,0,0)};
            
            Map = new Drawing(10, 10, false, new Vector2(0, 0));
         
        }

        protected override void Initialize()
        {
            base.Initialize();
            world.Init();
        }
  
        protected override void LoadContent()
        { 
            var parameters = myGraphics.GraphicsDevice.PresentationParameters;

            graphdev = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, graphprof, parameters);

            mapr = new RenderTarget2D(GraphicsDevice, 800, 600, false, SurfaceFormat.Color, DepthFormat.Depth24);

            Content.RootDirectory = "Content";

            batch1 = new SpriteBatch(GraphicsDevice);
            batch2 = new SpriteBatch(GraphicsDevice);

            Map.loading(Content, @"NewFolder1\map");

            mainf = Content.Load<SpriteFont>("mainf");

            mapTextData = new Color[800 * 600];
            mapr.GetData<Color>(mapTextData);
        }

        protected override void UnloadContent()
        {
        }
      
        protected override void Update(GameTime gameTime)
        {
            Camp = cam.Targeted(cam.position, vel,0,camscale);

            eltime += gameTime.ElapsedGameTime;

            if (eltime > TimeSpan.FromSeconds(1))
            {
                eltime -= TimeSpan.FromSeconds(1);
                FPS = FPC;
                FPC = 0;
            }

            world.UpdateWorld();
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.SetRenderTarget(mapr);
            world.UpdateWorld();
            FPC++;

            string FPSS = string.Format("fps: {0}", FPS);
            
            batch1.Begin(SpriteSortMode.Deferred,BlendState.AlphaBlend,null,null,null,null,Camp);
                        
            Map.draw(batch1);

            batch1.End();

            GraphicsDevice.SetRenderTarget(null);
            GraphicsDevice.Clear(Color.CornflowerBlue);
            
            batch2.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

                batch2.Draw(mapr, Vector2.Zero, Color.White);

                if (mymouse.LeftButton == ButtonState.Pressed && overload == 0)
                {
                    try
                    {
                        mapr.GetData<Color>(0, new Rectangle(mymouse.X, mymouse.Y, 1, 1), dat, 0, 1);
                        overload = 60;
                    }
                    catch
                    { }
                }

                if (mymouse.RightButton == ButtonState.Pressed)
                {
                   fill(mymouse.X, mymouse.Y, new Color(254, 230, 158, 255), dat[0], mapr); 
                }

                Color a = dat[0];
                string aa = string.Format("{0}", a);
                batch2.DrawString(mainf, aa, new Vector2(33, 400), Color.Black);

                if (overload > 0)
                    overload--;
            }

            batch2.End();
 
            base.Draw(gameTime);
        }

        fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
        {
            Color[] colors = new Color[1];
            rend.GetData(0, new Rectangle(x, y, 1, 1), colors, 0, 1);
            if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && colors[0] == oldC && colors[0] != newC)
            {
                colors [0] = newC;
                mapTextData[y * rend.Width + x] = colors[0];
                rend.SetData<Color>(mapTextData);
                fill(x - 1, y, newC, oldC, rend);
                fill(x + 1, y, newC, oldC, rend);
                fill(x, y - 1, newC, oldC, rend);
                fill(x, y + 1, newC, oldC, rend);
            }
            else return;
        }
    }
}

Последний раз редактировалось wppt, 06.12.2012 в 20:22.
(Offline)
 
Ответить с цитированием
Старый 06.12.2012, 19:02   #201
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Что это за код то? лишняя закрывающая скобка в Draw.
Не нужно создавать два SpritBatch, используй один.
В коде вообще каша какаето, ты наспех чтото удалял и переносил видимо, потому что имена переменных несовпадают даже в одном методе, mpr -morender, Rock_TextData,

if (>= && >= && rend.Width && rend.Height && [b]colors[0] == oldC && colors[0] != newC[/b]) 

Ну и вообще логикадолжна быть вся в Update а не в драве.

вот ты ухватился за этот код! Сейчас будет все
Пойми, лично мне твой код не нужен, не у меня с ним проблемы. Но если уж ты просишь помощи, до дай хотябы увидеть что ты натворил.

Последний раз редактировалось Dream, 06.12.2012 в 20:03.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (08.12.2012)
Старый 06.12.2012, 20:20   #202
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

Да, что-то я поторопился! Надеюсь, теперь все исправлено.

Ну так что же у меня не так?
(Offline)
 
Ответить с цитированием
Старый 06.12.2012, 21:05   #203
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Сообщение от wppt Посмотреть сообщение
Да, что-то я поторопился! Надеюсь, теперь все исправлено.

Ну так что же у меня не так?
Ну скинь исправленный код. я ведь не в курсе что ты атм исправил и как оно теперь выглядит.
(Offline)
 
Ответить с цитированием
Старый 07.12.2012, 17:04   #204
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

код выше уже исправлен

Но все равно не работает так, как надо
(Offline)
 
Ответить с цитированием
Старый 07.12.2012, 18:19   #205
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

где присваивание mymouse значения?
В общем, можешь скинуть весь проект, вечером погляжу что не так, нет - так нет, мне лень наугад направлять тебя.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (08.12.2012)
Старый 07.12.2012, 19:57   #206
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

сейчас, только все лишнее поудаляю

http://rghost.ru/42073190

вот
(Offline)
 
Ответить с цитированием
Старый 07.12.2012, 21:09   #207
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Тю блин, ты каждый раз перетираешь все изменения в рендер таргете.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (08.12.2012)
Старый 07.12.2012, 22:06   #208
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

неужели? А как тогда надо?
(Offline)
 
Ответить с цитированием
Старый 07.12.2012, 22:10   #209
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

protected override void LoadContent()
        {
            var 
parameters myGraphics.GraphicsDevice.PresentationParameters;

            
graphdev = new GraphicsDevice(GraphicsAdapter.DefaultAdaptergraphprofparameters);

            
mapr = new RenderTarget2D(GraphicsDevice800600falseSurfaceFormat.ColorDepthFormat.Depth24);

            
Content.RootDirectory "Content";

            
batch1 = new SpriteBatch(GraphicsDevice);
            
batch2 = new SpriteBatch(GraphicsDevice);

            
Map.load(Content, @"asd");

            
mainf Content.Load<SpriteFont>("MAINFN");

            
mapTextData = new Color[800 600];

            
GraphicsDevice.Clear(Color.CornflowerBlue);
            
GraphicsDevice.SetRenderTarget(mapr);

            
batch1.Begin(SpriteSortMode.DeferredBlendState.AlphaBlend);

            
Map.draw(batch1);

            
batch1.End();

            
GraphicsDevice.SetRenderTarget(null);
            
mapr.GetData<Color>(mapTextData);


        } 
protected override void Draw(GameTime gameTime)
        {



            
batch2.Begin(SpriteSortMode.DeferredBlendState.AlphaBlendnullnullnullnull);

            
batch2.Draw(maprVector2.ZeroColor.White);

            
Color a dat[0];
            
string aa string.Format("{0}"a);
            
batch2.DrawString(mainfaa, new Vector2(33400), Color.Black);



            
batch2.End();

            
base.Draw(gameTime);
        } 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (08.12.2012)
Старый 07.12.2012, 22:57   #210
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Вопросы по XNA.

я не понял, а как же заливать тогда?
И почему устанавливать рендертаргет, очищать экран, и рисовать батч нужно именно в loadContent? Ах да, программа виснет и бросает stackoverflow.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com