Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
casvs
0 / 0 / 0
Регистрация: 22.02.2017
Сообщений: 6
#1

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

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

добрый день!
попробовал что-нибуть написать по урокам с названием как название темы и столкнулся с роблемами на 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 введение (C++):

Создание игры на С++ - C++
Это моя курсовая работа , нужно написать игра на любом языке . Я выбрал с++.Дайте пожалуйста пару советов , м.б. книги какие нибудь...

Создание игры - C++
Здравствуйте, форумчане, на меня вдруг взъело желание написать свою игру. Но я в этом чайник, и хотелось бы услышать советы тех, кто в...

Создание игры - C++
Привет всем! Я только начал изучать с++ и,конечно, у меня возникло желание создать игру (у многих, я думаю, такое было). Однако я очень...

Создание игры на C++ - C++
Скажите , а можно ли создавать игры на С++? Если да , то буду рад увидеть примеры как это все реализовать и где можно. Возможно это С++...

Создание 2D игры - C++
Всем привет! Недавно появилось желание создать игру. И у меня накопились вопросы. Поэтому прошу вашой помощи, хочу услышать ваши мнения...

Создание игры - C++
Добрый вечер. Начал работу над собственным проектом, и задался вопросом. (gamedev и прочие сайты перечитывал, но так ответа и не нашел....

14
GbaLog-
Любитель чаепитий
3030 / 1398 / 337
Регистрация: 24.08.2014
Сообщений: 4,966
Записей в блоге: 1
Завершенные тесты: 2
22.02.2017, 20:48 #2
В какой строке ошибка-то?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
22.02.2017, 20:51 #3
Цитата Сообщение от casvs Посмотреть сообщение
C++
1
CurrentFrame += 0.005*time;
Имя переменной time поменяйте.
А то получается, что умножаете 0.005 на функцию time.

А предупреждения и так понятны.
0
nd2
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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-
Любитель чаепитий
3030 / 1398 / 337
Регистрация: 24.08.2014
Сообщений: 4,966
Записей в блоге: 1
Завершенные тесты: 2
22.02.2017, 20:56 #6
Цитата Сообщение от casvs Посмотреть сообщение
при смене имени переменной на time1 ошибки те же(
Врать нехорошо, при смене на time1 у вас должна появится ошибка о том, что такой переменной в помине нет в функции clavier().
Если вы в clavier() её сменили, конечно...
0
nd2
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
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
22.02.2017, 21:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2017, 21:53
Привет! Вот еще темы с ответами:

Создание игры - Змейка. - C++
Здравствуйте. Подскажите с помощью чего можно создать такую игру как Змейка. Не в консольном варианте, а с 2D графикой. Изучил...

Создание игры на Visual C++ - C++
Здравствуйте, я вот подумал что в связи с тем, что я стал много времени тратить на игры, вместо практики программирования, стоит связать...

Создание игры и софта - C++
Скажите пожалуйста какие книги можете порекомендовать на с++ я хочу написать игру в шахматы для виндоус но не знаю с чего начать код то я...

sdl,c++ создание 2D игры - C++
Доброго времени суток подскажите пожалуйста где у меня тут ошибка #include &lt;SDL.h&gt; #include &quot;глобал.h&quot; int main(int args, char...


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

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

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