15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274
1

Движок для платформеров

21.02.2014, 01:08. Показов 1367. Ответов 3
Метки нет (Все метки)

Всем привет!
Вот пишу движок для платвормеров, пишу пишу, компилиру, меня кидает в файл sml_map.h, на строку номер 469, шде написанно: __i = insert(__i, value_type(__k, mapped_type()));
#endif
return (*__i).second;
}
В описание к ошибеи написано:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\st l_map.h|469|error: no matching function for call to 'Animation::Animation()'|

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#ifndef ANIM_H
#define ANIM_H
 
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
using namespace sf;
using namespace std;
 
class Animation
{
public:
    vector<IntRect> frames, frames_flip;
    float currentFrame, speed;
    bool flip, isPlaying;
    Sprite sprite;
 
    Animation(Texture &t, int x, int y, int w, int h, int count, float Speed, int step)
    {
        speed = Speed;
        sprite.setTexture(t);
 
        currentFrame = 0;
        isPlaying = true;
        flip = false;
 
        for(int i = 0; i < count; i++)
        {
            frames.push_back(IntRect(x+i*step, y, w, h));
            frames_flip.push_back(IntRect(x+i*step+w, y, -w, h));
        }
 
    }
    void tick(float time)
    {
        if(!isPlaying) return;
 
        currentFrame += speed * time;
 
        if(currentFrame > frames.size())
                currentFrame -= frames.size();
 
        int i = currentFrame;
        sprite.setTextureRect(frames[i]);
        if(flip) sprite.setTextureRect(frames_flip[i]);
    }
};
 
class AnimationMananger
{
public:
    String currentAnim;
    map<String, Animation> animList;
 
    AnimationMananger()
    {}
 
    void create(String name, Texture&t, int x, int y, int w, int h, int count, float speed, int step)
    {
        animList[name] = Animation(t, x, y, w, h, count, speed, step);
        currentAnim = name;
    }
 
    void draw(RenderWindow &window, int x = 0, int y = 0)
    {
        animList[currentAnim].sprite.setPosition(x,y);
        window.draw(animList[currentAnim].sprite);
    }
    void set(String name) {currentAnim = name;}
 
    void flip(bool b) {animList[currentAnim].flip = b;}
 
    void tick(float time) {animList[currentAnim].tick(time);}
 
    void pause() {animList[currentAnim].isPlaying=false;}
 
    void play() {animList[currentAnim].isPlaying=true;}
 
};
#endif ANIM_H
int main()
{
    RenderWindow window(VideoMode(250, 150), "GAME");
 
    Texture q;
    q.loadFromFile("fang.png");
 
    AnimationMananger anim;
    anim.create("walk", q, 0,244,40,50, 6, 0.005, 40);
    anim.create("jump", q, 0,528,29,30, 4, 0.0045, 38);
    anim.create("duck", q, 0,436,80,20, 1, 0.005, 41);
    anim.create("stay", q, 0,187,42,52, 3, 0.002, 42);
    anim.create("shoot", q, 0,572,45,52, 5, 0.004, 45);
 
 
    SoundBuffer buffer;
    Music music;
    music.openFromFile("Mario_Theme.ogg");
    music.play();
 
    Clock clock;
 
    while (window.isOpen())
    {
       float time = clock.getElapsedTime().asMicroseconds();
       clock.restart();
 
       time = time/500; // ругулируется скорость игры
 
       if (time > 20) time = 20;
 
       Event event;
       while (window.pollEvent(event))
       {
           if(event.type == Event::Closed)
                window.close();
       }
 
       anim.set("stay");
 
       if (Keyboard::isKeyPressed(Keyboard::D)) anim.set("walk");
       if (Keyboard::isKeyPressed(Keyboard::A)) anim.set("walk");
       if (Keyboard::isKeyPressed(Keyboard::Space)) anim.set("jump");
       if (Keyboard::isKeyPressed(Keyboard::S)) anim.set("duck");
       if (Keyboard::isKeyPressed(Keyboard::Up)) anim.set("shoot");
 
 
       anim.tick(time);
 
       window.clear(Color(255,255,255));
       anim.draw(window,50,100);
 
       window.display();
    }
    return 0;
}
Спасибо за внимание!!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2014, 01:08
Ответы с готовыми решениями:

А кто сделал движок этого форума, потому что у многих русскоязычных форумов для программистов и не только движок похожий и кто его создал?
А кто сделал движок этого форума, потому что у многих русскоязычных форумов для программистов и не...

Бесплатный движок для САЙТА на Java Script для Бесплатных Хостингов
Зацените как работает движок для сайта Все страницы сделаны только в HTML и там находится только...

2D движок для C#
Хочу написать программу на C#. Программа представляет собой что-то вроде визуализатор...

движок для радио
Здраствуйте!!! Подскажите пожалуйста движок DLE подойдёт для интернет радио???

3
3254 / 2056 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
21.02.2014, 11:12 2
Цитата Сообщение от Leonman Посмотреть сообщение
|error: no matching function for call to 'Animation::Animation()'|
Написано же, что у класса Animation должен быть конструктор по умолчанию.
0
15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274
21.02.2014, 18:08  [ТС] 3
0x10, Спасибо, прийду домой, посмотрю

Добавлено через 5 часов 41 минуту
0x10, А что должно быть в конструкторе?

Добавлено через 5 минут
0x10, Снимаю свой вопрос.
0
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
21.02.2014, 18:10 4
В конструктор по умолчанию a.k.a конструктор без аргументов или с аргументами имеющими значение по умолчанию обычно пихают инициализацию параметров класса нулевыми значениями или какими - либо значениями по умолчанию. Вообще можете запихнуть туда что угодно. Я может не внимательно смотрел ваш код, но я не вижу чтобы вы использовали где-то его явно. Возможно ваш компилер не приемлет отсутствие конструктора по умолчанию как таковое. Если вы определяете конструктор отличный от конструктора по умолчанию, компилятор вам конструктор по умолчанию сам генерировать не будет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2014, 18:10
Помогаю со студенческими работами здесь

движок для словарей
Всем привет. Ребята, помогайте) Есть такой движок: http://glossword.biz Для создания онлайн...

Движок для работы с БД
Здравствуйте! Таков вопрос, а есть ли какой то движок для работы с БД, т.е. чтобы не писать все...

Движок для 3D игры.
Вот собрался написать хотя бы простенький 3d движёк. Обьясните основное как добавлять 3d...

Посоветуйте 3D движок для VB
Здравствуйте посоветуйте пожалуйста, 3d двиг для visual basic Нашёл из нормального...

Движок для игры
Всем доброго времени суток. Может я написал не в тот раздел, сильно не ругайте. Хотел бы взять...

Движок для сателлитов
Всем привет. Я тут новичок Я начал заниматься созданием сателлитов, у меня возник следующий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru