Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив. 
:(
    Опции темы
hafman
  Дата 26.5.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Как должен выгледить массив если он состоит из 3 "обьектов". 
Думал что 
Код

int array[2]={x,y,obekt}

А сам обьект имеет вид:
Работаю с SDL => 
Код

SDL_Surface* obekt;
.
Что самое странное подобная штука не  работает, и выкидывает матные слова типо 
Код

error: too many initializers for ‘int [2]’
error: invalid conversion from ‘SDL_Surface*’ to ‘int’


PM MAIL   Вверх
triclosan
Дата 26.5.2011, 22:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Код

SDL_Surface* array[]={x,y,obekt};


Это сообщение отредактировал(а) triclosan - 26.5.2011, 22:48
PM MAIL   Вверх
bsa
Дата 26.5.2011, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



hafman, обычно, разнородные объекты объединяют с помощью структур.
Но на твоем бы месте я описал задачу более глобально.
PM   Вверх
triclosan
Дата 26.5.2011, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



hafman, x,y - это не SDL_Surface* ? smile 
PM MAIL   Вверх
bsa
Дата 26.5.2011, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



triclosan, логично предположить, что нет.  smile 
Скорее всего, он хочет сделать картинку с координатами относительно холста.
PM   Вверх
hafman
Дата 26.5.2011, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Цитата(bsa @  26.5.2011,  23:13 Найти цитируемый пост)
triclosan, логично предположить, что нет.  smile 
Скорее всего, он хочет сделать картинку с координатами относительно холста. 

Да, хочу сделать именно её smile . Просто надоело писать код без массивов,хочется компактности от него, думаю они мне помогут+ элементов с одинаковыми "картинками" много, надо как то это лечить, а не писать вечно новые координаты и наносы. 
 smile 
+
Имеются две функции:загрузки картинки для сюрфейса+ нанос на "окно".

Это сообщение отредактировал(а) hafman - 26.5.2011, 23:32
PM MAIL   Вверх
hafman
Дата 27.5.2011, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Каким образом  можно решить проблему повторяние обьектов, которые имееют одни характеристики? Просто дофига обьектов которые надо наносить на поверхность, а это ещё лишние строчки кода+это делать лень smile  smile 
PM MAIL   Вверх
hafman
Дата 27.5.2011, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



help
PM MAIL   Вверх
borisbn
Дата 27.5.2011, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Код

struct SurfaceAndCoords {
    int x;
    int y;
    SDL_Surface * surface;
};

SurfaceAndCoords array[] = { { x, y, objekt } };



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
hafman
Дата 27.5.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Цитата(borisbn @  27.5.2011,  13:38 Найти цитируемый пост)
код C++
struct SurfaceAndCoords {
    int x;
    int y;
    SDL_Surface * surface;
};
SurfaceAndCoords array[] = { { x, y, objekt } };

Если я правильно понял то тут идёт как бы"урезание кода"? А как можно сделать что бы количество таких масивов быо определенное количество, те  что бы не вечно писать структуру-массив, а как то определить сразу же  количество массивов. Может как то через переменную? Например перемеенная равна 5, то и количество таких массивов равно 5.Или это не реально?
PM MAIL   Вверх
hafman
Дата 27.5.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Может это аморально, но может быть массив структур?
PM MAIL   Вверх
bsa
Дата 27.5.2011, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



hafman, пока что никто тебя толком не понял. попробуй рассказать еще проще, что ты в итоге хочешь получить. Пока что, из твоих сведений можно понять только то, что тебе нужен массив этих структур.
PM   Вверх
hafman
Дата 27.5.2011, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Цитата(bsa @  27.5.2011,  18:28 Найти цитируемый пост)
hafman, пока что никто тебя толком не понял. попробуй рассказать еще проще, что ты в итоге хочешь получить. Пока что, из твоих сведений можно понять только то, что тебе нужен массив этих структур. 

Вот написал код, с массивом структур, но он не работает.Выдает ошибку сигментации, надо что бы он ВСЕ 9 элементов отрисова, а не 1. Писать каждый расс apply_surface уже тошнит  smile .Может есть варианты решить проблему?

Код

#include <SDL/SDL.h>
#include "uf.h"
#define SCREEN_WIDTH 240
#define SCREEN_HEIGHT 100

struct Strukts {
    int x;
    int y;
    //SDL_Surface * surface;
}ona[9];
Strukts surface(int x, int y, SDL_Surface* src, SDL_Surface* dst, SDL_Rect* clip);
int main(){
    SDL_Surface* ono;
    SDL_Surface* screen;
    int i;
    ona[i].x=30;
    ona[i].y=40;
    ono=load_image("zamena.png");
    SDL_Event event;
    int quit = 0;
    SDL_Init(SDL_INIT_EVERYTHING);
    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 24, SDL_HWSURFACE | SDL_DOUBLEBUF);
    while(!quit)
        {

        SDL_PollEvent(&event);    
        if (event.type == SDL_QUIT)
        {
            quit = 1;
        }
        else if (event.type == SDL_KEYDOWN) 
            {
            if (event.key.keysym.sym == SDLK_ESCAPE)
            {
                quit = 1;        
            }
            surface(ona[i].x,ona[i].y,ono,screen,0);
            
            SDL_Flip(screen);
    }
    }
    SDL_Quit();
    return 0;
}
Strukts surface(int x, int y, SDL_Surface* src, SDL_Surface* dst, SDL_Rect* clip){
    SDL_Rect obekt;
    obekt.x = x;
    obekt.y=y;
    SDL_BlitSurface(src, clip, dst, &obekt);
}

Выдается ошибка сегментированя, как ее убить можно?Задача такова  что нужно нанести 9 обьектов:c

Это сообщение отредактировал(а) hafman - 27.5.2011, 19:43
PM MAIL   Вверх
xvr
Дата 27.5.2011, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Пока у вас нарисовано нечто непонятное, но явно неправильное. Можете внятно изложить, что же вам надо?

PM MAIL   Вверх
hafman
Дата 27.5.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.4.2011

Репутация: нет
Всего: нет



Цитата(xvr @  27.5.2011,  19:40 Найти цитируемый пост)
Пока у вас нарисовано нечто непонятное, но явно неправильное. Можете внятно изложить, что же вам надо?

    В этом коде для наноса картинки (картинки, координат по х и у)  на screen используется  (apply_surface). Теперь представьте что нужно 20 штук одинаковых "картинок"==>нужно еще 20 раз напписать apply_surface , да и плю к этому еще координаты-это еще 40 строчек кода и ишний гемор. Я хочу избаавиться как нибудь от этих 60 строк кода, и переделать их в меньшее количество. Товарищи предлагают делать через структуры, как видите структура которую я написал работате только с "определённым значением", а мне надо что бы загружались все структуры в массиве (а не пятая,восьмая и тд), и соответсвенно они наносились с разными координатами(функцию рандома могу дать). Те вывод я так думаю что надо что то типо такого, как мне приставляется
Код

/////
ona[i],x=random(1,100);
ona[i],y=random(80,430);
..
..
..
for (i=0;i<20;i++){//для наноса 20 обьектов с характеристиками этой структуры.
      apply_surface(ona[i].x,ona[i].y,ono,screen,0);
      break;

В моём коде 9 обьектов, но разнецы не какой

Добавлено @ 20:17
Проблема ясна?
Help smile 

Это сообщение отредактировал(а) hafman - 27.5.2011, 20:23
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.