Форум программистов, компьютерный форум, киберфорум
Наши страницы
SFML
Войти
Регистрация
Восстановить пароль
 
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
#1

Создание игры на C++/ SFML введение - SFML

22.02.2017, 20:42. Просмотров 962. Ответов 15
Метки нет (Все метки)

добрый день!
попробовал что-нибуть написать по урокам с названием как название темы и столкнулся с роблемами на 5 уроке,
вылезает 2 предупреждения и 1 ошибка, но где я не прав никак не могу понять. Код предупреждения и ошибки ниже:
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
#include <SFML/Graphics.hpp>
#include <iostream>
 
sf::RenderWindow window;
sf::CircleShape circle(70,20);
sf::CircleShape triple(70, 3);
sf::CircleShape romb(70, 4);
sf::CircleShape square(70, 4);
sf::RectangleShape rectangl(sf::Vector2f(150, 5));
sf::Image image;
sf::Texture texture;
sf::Sprite sprite;
float speed = 0.1;
float CurrentFrame = 0;
 
void clavier();
 
 
 
int main()
{
 
    window.create(sf::VideoMode(640, 480), "Cas Test");
    window.setFramerateLimit(60);
 
    
    circle.setFillColor(sf::Color::Yellow);
    circle.setPosition(20, 20);
 
    triple.setFillColor(sf::Color::Blue);
    triple.setPosition(200, 20);
 
    romb.setFillColor(sf::Color::Red);
    romb.setPosition(20, 200);
 
    square.setFillColor(sf::Color::Cyan);
    square.setPosition(250, 200);
    square.rotate(45);
 
    rectangl.setFillColor(sf::Color::Green);
    rectangl.setPosition(300, 20);
 
    // Загружаем картинку!
    image.loadFromFile("image.png");
    texture.loadFromImage(image);
    sprite.setTexture(texture);
    sprite.setPosition(50, 50);
    sprite.setTextureRect(sf::IntRect(0, 0, 64, 96));
 
    sf::Clock clock;
 
    while (window.isOpen())
    {
 
        float time = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        time = time/800;
        std::cout << time << std::endl;
        
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        
        clavier();
        
 
 
 
        window.clear(sf::Color::Black);
        window.draw(circle);
        window.draw(triple);
        window.draw(romb);
        window.draw(square);
        window.draw(rectangl);
        window.draw(sprite);
        window.display();
    }
 
 
    return 0;
 
}
 
void clavier()
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        CurrentFrame += 0.005*time;
        if (CurrentFrame > 4) CurrentFrame -= 4;
        sprite.setTextureRect(sf::IntRect(int(CurrentFrame)*64, 96, 64, 96));
        
        sprite.move(-speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
    {
        sprite.move(speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
    {
        sprite.move(0, -speed);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {
        sprite.move(0, speed);
    }
}
Предупреждение 1 warning C4305: инициализация: усечение из "double" к "float"
Предупреждение 2 warning C4244: инициализация: преобразование "sf::Int64" в "float", возможна потеря данных
Ошибка 3 error C2297: *: недопустимо, правый оператор имеет тип "time_t (__cdecl *)(time_t *)"

Заранее прошу прощения, если что-то не так оформил, в инете лазил но решение не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2017, 20:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание игры на C++/ SFML введение (SFML):

Создание игры на sfml
Помогите создать игру: снизу экрана бегает существо(не важно кто), им управляет...

Создание релиза exe файла SFML C++ на VS 2017 (не удается открыть входной файл "sfml-graphics-s.lib")
не могу собрать решение релиз версии, не пойму что я делаю не так постоянно...

Скролинг карты игры (sfml)
Вот так я 3мя строчками решаю скроллинг карты, нашел такой пример. рисую на...

Вставка текстуры при создании игры (SFML)
#include &lt;SFML/Graphics.hpp&gt; using namespace sf; int main() { RenderWindow...

SFML создание кнопки
Подскажите, как создать кнопку с помощью SFML, т.е. загрузить картинку, которая...

SFML, создание пустой текстуры
Есть класс GameCell в котором создаются текстура и спрайт, предположим так:...

15
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
22.02.2017, 20:48 #2
В какой строке ошибка-то?
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,929
Записей в блоге: 3
Завершенные тесты: 1
22.02.2017, 20:51 #3
Цитата Сообщение от casvs Посмотреть сообщение
C++
1
CurrentFrame += 0.005*time;
Имя переменной time поменяйте.
А то получается, что умножаете 0.005 на функцию time.

А предупреждения и так понятны.
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 20:51 #4
Цитата Сообщение от casvs Посмотреть сообщение
C++
1
float time
Я бы заменил название переменной.
0
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
22.02.2017, 20:54  [ТС] #5
предупреждения 13 и 55, ошибка 91

Добавлено через 2 минуты
при смене имени переменной на time1 ошибки те же(
0
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
22.02.2017, 20:56 #6
Цитата Сообщение от casvs Посмотреть сообщение
при смене имени переменной на time1 ошибки те же(
Врать нехорошо, при смене на time1 у вас должна появится ошибка о том, что такой переменной в помине нет в функции clavier().
Если вы в clavier() её сменили, конечно...
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 20:58 #7
Цитата Сообщение от casvs Посмотреть сообщение
при смене имени переменной на time1 ошибки те же(
Везде имя поменяй.
0
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
22.02.2017, 21:06  [ТС] #8
я везде и поменял, но кажеться название ошибки поменялось...:
Ошибка 3 error C2065: time1: необъявленный идентификатор \documents\visual studio 2013\projects\проект1\проект1\исходный код.cpp 91 1 Проект1
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 21:09 #9
Цитата Сообщение от casvs Посмотреть сообщение
я везде и поменял, но кажеться название ошибки поменялось...:
В 55-ой поменял? Код выложи.
0
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
22.02.2017, 21:10  [ТС] #10
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
#include <SFML/Graphics.hpp>
#include <iostream>
 
sf::RenderWindow window;
sf::CircleShape circle(70,20);
sf::CircleShape triple(70, 3);
sf::CircleShape romb(70, 4);
sf::CircleShape square(70, 4);
sf::RectangleShape rectangl(sf::Vector2f(150, 5));
sf::Image image;
sf::Texture texture;
sf::Sprite sprite;
float speed = 0.1;
float CurrentFrame = 0;
 
void clavier();
 
 
 
int main()
{
 
    window.create(sf::VideoMode(640, 480), "Cas Test");
    window.setFramerateLimit(60);
 
    
    circle.setFillColor(sf::Color::Yellow);
    circle.setPosition(20, 20);
 
    triple.setFillColor(sf::Color::Blue);
    triple.setPosition(200, 20);
 
    romb.setFillColor(sf::Color::Red);
    romb.setPosition(20, 200);
 
    square.setFillColor(sf::Color::Cyan);
    square.setPosition(250, 200);
    square.rotate(45);
 
    rectangl.setFillColor(sf::Color::Green);
    rectangl.setPosition(300, 20);
 
    // Загружаем картинку!
    image.loadFromFile("image.png");
    texture.loadFromImage(image);
    sprite.setTexture(texture);
    sprite.setPosition(50, 50);
    sprite.setTextureRect(sf::IntRect(0, 0, 64, 96));
 
    sf::Clock clock;
 
    while (window.isOpen())
    {
 
        float time1 = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        float time1 = time1/800;
        std::cout << time1 << std::endl;
        
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        
        clavier();
        
 
 
 
        window.clear(sf::Color::Black);
        window.draw(circle);
        window.draw(triple);
        window.draw(romb);
        window.draw(square);
        window.draw(rectangl);
        window.draw(sprite);
        window.display();
    }
 
 
    return 0;
 
}
 
void clavier()
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        CurrentFrame += 0.005*time1;
        if (CurrentFrame > 4) CurrentFrame -= 4;
        sprite.setTextureRect(sf::IntRect(int(CurrentFrame)*64, 96, 64, 96));
        
        sprite.move(-speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
    {
        sprite.move(speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
    {
        sprite.move(0, -speed);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {
        sprite.move(0, speed);
    }
}
я вообще запутался( еще пара ошибок вылезло...
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 21:14 #11
Цитата Сообщение от casvs Посмотреть сообщение
time1: необъявленный идентификатор \documents\visual studio 2013\projects\проект1\проект1\исходный код.cpp 91 1 Проект1
В 91 строке нет time1, но функция ничего не знает о time2.
0
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
22.02.2017, 21:30  [ТС] #12
получаеться так, при переменной time ошибка:
Ошибка 3 error C2297: *: недопустимо, правый оператор имеет тип "time_t (__cdecl *)(time_t *)" в 91 строке
при переменно time1 ошибка:
Ошибка 3 error C2065: time1: необъявленный идентификатор в 91 строке...
Я так понимаю переменная не правильно передаеться в функцию
C++
1
clavier()
...
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 21:36 #13
Цитата Сообщение от casvs Посмотреть сообщение
Я так понимаю переменная не правильно передаеться в функцию
C++
1
clavier();
Разве в неё что-то передаётся?

Добавлено через 2 минуты
Цитата Сообщение от casvs Посмотреть сообщение
C++
1
2
3
float time1 = clock.getElapsedTime().asMicroseconds(); 
clock.restart(); 
float time1 = time1/800;
Компилятор не ругается, что две переменные с один и тем же именем объявил?
0
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
22.02.2017, 21:41  [ТС] #14
Ругаеться но это я уже поправил, просто пытался играться с переменными, делал другую переменную и забыл почистить,
блин такими темпами я сейчас всех запутаю и сам не решу проблему(
0
nd2
2828 / 2398 / 1054
Регистрация: 29.01.2016
Сообщений: 8,022
22.02.2017, 21:53 #15
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
include <SFML/Graphics.hpp>
#include <iostream>
 
sf::RenderWindow window;
sf::CircleShape circle(70,20);
sf::CircleShape triple(70, 3);
sf::CircleShape romb(70, 4);
sf::CircleShape square(70, 4);
sf::RectangleShape rectangl(sf::Vector2f(150, 5));
sf::Image image;
sf::Texture texture;
sf::Sprite sprite;
float speed = 0.1f;
float CurrentFrame = 0;
 
void clavier(float);
 
 
 
int main()
{
 
    window.create(sf::VideoMode(640, 480), "Cas Test");
    window.setFramerateLimit(60);
 
    
    circle.setFillColor(sf::Color::Yellow);
    circle.setPosition(20, 20);
 
    triple.setFillColor(sf::Color::Blue);
    triple.setPosition(200, 20);
 
    romb.setFillColor(sf::Color::Red);
    romb.setPosition(20, 200);
 
    square.setFillColor(sf::Color::Cyan);
    square.setPosition(250, 200);
    square.rotate(45);
 
    rectangl.setFillColor(sf::Color::Green);
    rectangl.setPosition(300, 20);
 
    // Загружаем картинку!
    image.loadFromFile("image.png");
    texture.loadFromImage(image);
    sprite.setTexture(texture);
    sprite.setPosition(50, 50);
    sprite.setTextureRect(sf::IntRect(0, 0, 64, 96));
 
    sf::Clock clock;
 
    while (window.isOpen())
    {
 
        float time1 = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        time1 = time1/800;
        std::cout << time1 << std::endl;
        
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        
        clavier(time1);
        
 
 
 
        window.clear(sf::Color::Black);
        window.draw(circle);
        window.draw(triple);
        window.draw(romb);
        window.draw(square);
        window.draw(rectangl);
        window.draw(sprite);
        window.display();
    }
 
 
    return 0;
 
}
 
void clavier(float time1)
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        CurrentFrame += 0.005f*time1;
        if (CurrentFrame > 4) CurrentFrame -= 4;
        sprite.setTextureRect(sf::IntRect(int(CurrentFrame)*64, 96, 64, 96));
        
        sprite.move(-speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
    {
        sprite.move(speed, 0);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
    {
        sprite.move(0, -speed);
    }
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {
        sprite.move(0, speed);
    }
}
0
mrden777
1 / 10 / 11
Регистрация: 20.03.2018
Сообщений: 373
Завершенные тесты: 2
22.04.2018, 10:18 #16
А вроде как фунуции SPEED не присвоил никакого значения
0
22.04.2018, 10:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2018, 10:18
Привет! Вот еще темы с решениями:

Создание GUI используя библиотеку SFML
Ребят ответьте на вопрос, как создать GUI т.е. поле ввода и кнопки и т д с...

SFML Создание массива экземпляров класса
В ActionScript3.0 такой безысходности небыло) Работаю с SFML Проблема...

<SFML/Graphics.hpp> создание спрайта
Хочу создать спрайт, загрузить в него текстуру и вывести на экран. Проблема: ...

Создание окна необычной формы в SFML
За странный вопрос и безграмотную подачу не пинайте сильно, редко спрашиваю....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru