SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Выбивает такую ошибку( Ошибка 2 error C3861: move: идентификатор не найден )
В этой теме 14 ответов, 3 участника, последнее обновление Anya 7 года/лет, 10 мес. назад.
-
АвторСообщения
-
Выбивает такую ошибку( Ошибка 2 error C3861: move: идентификатор не найден )
в чем моя ошибка?
#include <SFML/Graphics.hpp>
#include <stdio.h>
#include <time.h>//float Rotation = 0;
using namespace sf;
int main()
{
srand(time(NULL));
//Texture herotexture;
//herotexture.loadFromFile(“D:/programka/zachet123/image/111.png”);//Sprite herosprite;
// herosprite.setTexture(herotexture);
// herosprite.setTextureRect(IntRect(0, 0, 132, 133));
// herosprite.setPosition(350,330);
// //herosprite.setPosition(415, 390);
// //herosprite.setPosition(205, 200);
// herosprite.setRotation(0);sf::RenderWindow window(sf::VideoMode(800, 800), “SUN”);
RectangleShape rectamble(Vector2f(500000, 500000));
rectamble.setFillColor(Color(255, 165, 0));
Texture herotexture2;
herotexture2.loadFromFile(“D:/programka/zachet123/image/333.png”);Sprite herosprite2;
herosprite2.setTexture(herotexture2);
herosprite2.setTextureRect(IntRect(0, 0, 400, 400));
herosprite2.setPosition(0, 0);
herosprite2.setRotation(0);int Part = 0;
/*sf::ConvexShape convex;
convex.setFillColor(sf::Color::Yellow);
convex.setPointCount(8);
convex.setPoint(0, sf::Vector2f(142, 82));
convex.setPoint(1, sf::Vector2f(260, 82));
convex.setPoint(2, sf::Vector2f(320, 140));
convex.setPoint(3, sf::Vector2f(320, 250));
convex.setPoint(4, sf::Vector2f(262, 310));
convex.setPoint(5, sf::Vector2f(154, 310));
convex.setPoint(6, sf::Vector2f(100, 250));
convex.setPoint(7, sf::Vector2f(100, 150));RectangleShape line(Vector2f(150, 10));
line.rotate(45);
line.setPosition(40, 20);
line.setFillColor(Color::Yellow);RectangleShape line2(Vector2f(150, 10));
line2.rotate(67);
line2.setPosition(165, 10);
line2.setFillColor(Color::Yellow);RectangleShape line3(Vector2f(150, 10));
line3.rotate(95);
line3.setPosition(240, 10);
line3.setFillColor(Color::Yellow);RectangleShape line4(Vector2f(150, 10));
line4.rotate(120);
line4.setPosition(330, 20);
line4.setFillColor(Color::Yellow);RectangleShape line5(Vector2f(150, 10));
line5.rotate(167);
line5.setPosition(390, 130);
line5.setFillColor(Color::Yellow);RectangleShape line6(Vector2f(150, 10));
line6.rotate(200);
line6.setPosition(400, 250);
line6.setFillColor(Color::Yellow);RectangleShape line7(Vector2f(150, 10));
line7.rotate(230);
line7.setPosition(350, 350);
line7.setFillColor(Color::Yellow);RectangleShape line8(Vector2f(150, 10));
line8.rotate(260);
line8.setPosition(240, 390);
line8.setFillColor(Color::Yellow);RectangleShape line9(Vector2f(150, 10));
line9.rotate(290);
line9.setPosition(140, 390);
line9.setFillColor(Color::Yellow);RectangleShape line10(Vector2f(150, 10));
line10.rotate(320);
line10.setPosition(50, 350);
line10.setFillColor(Color::Yellow);RectangleShape line11(Vector2f(150, 10));
line11.rotate(350);
line11.setPosition(10, 250);
line11.setFillColor(Color::Yellow);RectangleShape line12(Vector2f(150, 10));
line12.rotate(380);
line12.setPosition(10, 130);
line12.setFillColor(Color::Yellow);CircleShape square(10, 4);
square.setFillColor(Color(0, 150, 0));
square.setPosition(170, 150);CircleShape square2(10, 4);
square2.setFillColor(Color(0, 150, 0));
square2.setPosition(240, 150);sf::ConvexShape convex2;
convex2.setFillColor(sf::Color::Red);
convex2.setPointCount(3);
convex2.setPoint(0, sf::Vector2f(170, 240));
convex2.setPoint(1, sf::Vector2f(260, 240));
convex2.setPoint(2, sf::Vector2f(215, 260));
*/
while (window.isOpen())
{sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}int X[4]{600, 600, 0, 0}, Y[4]{0, 600, 600, 0};
switch (Part)
{
case 0:move(0.1, 0);
if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;
case 1:move(0, 0.1);
if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;
case 2:move(-0.1, 0);
if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;
case 3:move(0, -0.1);
if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part = 0; break;
}/*herosprite.rotate(Rotation);
herosprite.setOrigin(66, 66);
Rotation += 0.0005;herosprite2.rotate(Rotation);
herosprite2.setOrigin(200, 200);
Rotation += 0.0005;*/
/*
if ((Keyboard::isKeyPressed(Keyboard::Left)) || (Keyboard::isKeyPressed(Keyboard::A)))
{
herosprite.move(-0.1, 0);
}if ((Keyboard::isKeyPressed(Keyboard::Right)) || (Keyboard::isKeyPressed(Keyboard::D)))
{
herosprite.move(0.1, 0);
}if ( (Keyboard::isKeyPressed(Keyboard::Up)) || (Keyboard::isKeyPressed(Keyboard::W)))
{
herosprite.move(0, -0.1);
}if ((Keyboard::isKeyPressed(Keyboard::Down)) || (Keyboard::isKeyPressed(Keyboard::S)))
{
herosprite.move(0, 0.1);
}if ((Keyboard::isKeyPressed(Keyboard::Left)) || (Keyboard::isKeyPressed(Keyboard::A)))
{
herosprite2.move(-0.1, 0);
}if ((Keyboard::isKeyPressed(Keyboard::Right)) || (Keyboard::isKeyPressed(Keyboard::D)))
{
herosprite2.move(0.1, 0);
}if ((Keyboard::isKeyPressed(Keyboard::Up)) || (Keyboard::isKeyPressed(Keyboard::W)))
{
herosprite2.move(0, -0.1);
}if ((Keyboard::isKeyPressed(Keyboard::Down)) || (Keyboard::isKeyPressed(Keyboard::S)))
{
herosprite2.move(0, 0.1);
}*/
window.clear();
window.draw(rectamble);
/*window.draw(convex);
window.draw(line);
window.draw(line2);
window.draw(line3);
window.draw(line4);
window.draw(line5);
window.draw(line6);
window.draw(line7);
window.draw(line8);
window.draw(line9);
window.draw(line10);
window.draw(line11);
window.draw(line12);*/
/*window.draw(square);
window.draw(square2);
window.draw(convex2);*/
window.draw(herosprite2);
/*window.draw(herosprite);*/
window.display();
}return 0;
}вот код
Вероятно не подключил какой-то заголовочный файл, а может пытаешься вызываешь что-то за пределами области видимости, а может… кхм.
Нажми при вставке “текст”, там будет “вставить код”, ну или вроде как иконка типа <>
Как я понял, ты хочешь подвинуть что-то в кейсе, тут: case 0:move(0.1, 0);
move это метод спрайта. Если перед точкой нет спрайта, компилятор не понимает что такое мув.
C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234#include <SFML/Graphics.hpp>#include <iomanip>#include <stdio.h>#include <time.h>//float Rotation = 0;using namespace sf;int main(){//Texture herotexture;//herotexture.loadFromFile("D:/programka/zachet123/image/111.png");//Sprite herosprite;// herosprite.setTexture(herotexture);// herosprite.setTextureRect(IntRect(0, 0, 132, 133));// herosprite.setPosition(350,330);// //herosprite.setPosition(415, 390);// //herosprite.setPosition(205, 200);// herosprite.setRotation(0);sf::RenderWindow window(sf::VideoMode(600, 600), "SUN");RectangleShape rectamble(Vector2f(500000, 500000));rectamble.setFillColor(Color(255, 165, 0));Texture herotexture2;herotexture2.loadFromFile("D:/programka/zachet123/image/333.png");Sprite herosprite2;herosprite2.setTexture(herotexture2);herosprite2.setTextureRect(IntRect(0, 0, 400, 400));herosprite2.setPosition(0, 0);herosprite2.setRotation(0);int Part = 0;/*sf::ConvexShape convex;convex.setFillColor(sf::Color::Yellow);convex.setPointCount(8);convex.setPoint(0, sf::Vector2f(142, 82));convex.setPoint(1, sf::Vector2f(260, 82));convex.setPoint(2, sf::Vector2f(320, 140));convex.setPoint(3, sf::Vector2f(320, 250));convex.setPoint(4, sf::Vector2f(262, 310));convex.setPoint(5, sf::Vector2f(154, 310));convex.setPoint(6, sf::Vector2f(100, 250));convex.setPoint(7, sf::Vector2f(100, 150));RectangleShape line(Vector2f(150, 10));line.rotate(45);line.setPosition(40, 20);line.setFillColor(Color::Yellow);RectangleShape line2(Vector2f(150, 10));line2.rotate(67);line2.setPosition(165, 10);line2.setFillColor(Color::Yellow);RectangleShape line3(Vector2f(150, 10));line3.rotate(95);line3.setPosition(240, 10);line3.setFillColor(Color::Yellow);RectangleShape line4(Vector2f(150, 10));line4.rotate(120);line4.setPosition(330, 20);line4.setFillColor(Color::Yellow);RectangleShape line5(Vector2f(150, 10));line5.rotate(167);line5.setPosition(390, 130);line5.setFillColor(Color::Yellow);RectangleShape line6(Vector2f(150, 10));line6.rotate(200);line6.setPosition(400, 250);line6.setFillColor(Color::Yellow);RectangleShape line7(Vector2f(150, 10));line7.rotate(230);line7.setPosition(350, 350);line7.setFillColor(Color::Yellow);RectangleShape line8(Vector2f(150, 10));line8.rotate(260);line8.setPosition(240, 390);line8.setFillColor(Color::Yellow);RectangleShape line9(Vector2f(150, 10));line9.rotate(290);line9.setPosition(140, 390);line9.setFillColor(Color::Yellow);RectangleShape line10(Vector2f(150, 10));line10.rotate(320);line10.setPosition(50, 350);line10.setFillColor(Color::Yellow);RectangleShape line11(Vector2f(150, 10));line11.rotate(350);line11.setPosition(10, 250);line11.setFillColor(Color::Yellow);RectangleShape line12(Vector2f(150, 10));line12.rotate(380);line12.setPosition(10, 130);line12.setFillColor(Color::Yellow);CircleShape square(10, 4);square.setFillColor(Color(0, 150, 0));square.setPosition(170, 150);CircleShape square2(10, 4);square2.setFillColor(Color(0, 150, 0));square2.setPosition(240, 150);sf::ConvexShape convex2;convex2.setFillColor(sf::Color::Red);convex2.setPointCount(3);convex2.setPoint(0, sf::Vector2f(170, 240));convex2.setPoint(1, sf::Vector2f(260, 240));convex2.setPoint(2, sf::Vector2f(215, 260));*/while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}int X[4]{600, 600, 0, 0}, Y[4]{0, 600, 600, 0};switch (Part){case 0:move(0.1, 0);if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;case 1:move(0, 0.1);if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;case 2:move(-0.1, 0);if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part++; break;case 3:move(0, -0.1);if (herosprite2.getPosition().x == X[Part] && herosprite2.getPosition().y == Y[Part])Part = 0; break;}/*herosprite.rotate(Rotation);herosprite.setOrigin(66, 66);Rotation += 0.0005;herosprite2.rotate(Rotation);herosprite2.setOrigin(200, 200);Rotation += 0.0005;*//*if ((Keyboard::isKeyPressed(Keyboard::Left)) || (Keyboard::isKeyPressed(Keyboard::A))){herosprite.move(-0.1, 0);}if ((Keyboard::isKeyPressed(Keyboard::Right)) || (Keyboard::isKeyPressed(Keyboard::D))){herosprite.move(0.1, 0);}if ( (Keyboard::isKeyPressed(Keyboard::Up)) || (Keyboard::isKeyPressed(Keyboard::W))){herosprite.move(0, -0.1);}if ((Keyboard::isKeyPressed(Keyboard::Down)) || (Keyboard::isKeyPressed(Keyboard::S))){herosprite.move(0, 0.1);}if ((Keyboard::isKeyPressed(Keyboard::Left)) || (Keyboard::isKeyPressed(Keyboard::A))){herosprite2.move(-0.1, 0);}if ((Keyboard::isKeyPressed(Keyboard::Right)) || (Keyboard::isKeyPressed(Keyboard::D))){herosprite2.move(0.1, 0);}if ((Keyboard::isKeyPressed(Keyboard::Up)) || (Keyboard::isKeyPressed(Keyboard::W))){herosprite2.move(0, -0.1);}if ((Keyboard::isKeyPressed(Keyboard::Down)) || (Keyboard::isKeyPressed(Keyboard::S))){herosprite2.move(0, 0.1);}*/window.clear();window.draw(rectamble);/*window.draw(convex);window.draw(line);window.draw(line2);window.draw(line3);window.draw(line4);window.draw(line5);window.draw(line6);window.draw(line7);window.draw(line8);window.draw(line9);window.draw(line10);window.draw(line11);window.draw(line12);*//*window.draw(square);window.draw(square2);window.draw(convex2);*/window.draw(herosprite2);/*window.draw(herosprite);*/window.display();}return 0;}я этим действием хотел сделать автоматическое передвижения по краям окна , если у вас есть по -проще решение этой задачи , буду превыше благодарен !!!
Ошибку я тебе уже указал. Логика то у тебя верна. Конечно можно исправить код за тебя…
Поступим так, лол. Этот код делает как ты возможно хочешь (если я правильно тебя понял), но только один круг.
C++123456789101112float X[4]{ 200, 200, 0, 0 }, Y[4]{ 0, 200, 200, 0 };switch (Part){case 0: herosprite2.move(0.1, 0);if (herosprite2.getPosition().x >= X[Part] && herosprite2.getPosition().y >= Y[Part] ) Part++; break;case 1: herosprite2.move(0, 0.1);if (herosprite2.getPosition().x >= X[Part] && herosprite2.getPosition().y >= Y[Part]) Part++; break;case 2: herosprite2.move(-0.1, 0);if (herosprite2.getPosition().x <= X[Part] && herosprite2.getPosition().y >= Y[Part]) Part++; break;case 3: herosprite2.move(0, -0.1);if (herosprite2.getPosition().x <= X[Part] && herosprite2.getPosition().y <= Y[Part]) Part = 0; break;}1) Нельзя создавать переменные в цикле.
2) Проще просто некуда.
А почему один ? В конце 4 етапа переменная Part обнуляеться.И зачем знак : “<=”,”>=” если у спрайта нету шанса покинуть пределы области ?
Anya ты лучшая)))
Спасибо вам обоим за прекрасную помощь
Artem Moskalik кек, 00:00 и не поспоришь.
LastikPro у меня на VS15 double 0.1 равняется чему-то вроде 0.10000000000056.
а как зацеклировать это действие то оно только 1 раз проходит и всё?
Так вроде зациклил или нет ?
C++1234567891011121314float X[4]{ 200, 200, 0, 0.0 }, Y[4]{ 0.0, 200, 200, 0.0 };switch (Part){case 0: herosprite2.move(0.1, 0);if (herosprite2.getPosition().x >= X[Part] && herosprite2.getPosition().y >= Y[Part] ) Part++; break;case 1: herosprite2.move(0, 0.1);if (herosprite2.getPosition().x >= X[Part] && herosprite2.getPosition().y >= Y[Part]) Part++; break;case 2: herosprite2.move(-0.1, 0);if (herosprite2.getPosition().x <= X[Part] && herosprite2.getPosition().y >= Y[Part]) Part++; break;case 3: herosprite2.move(0, -0.1);if (herosprite2.getPosition().x <= X[Part] && herosprite2.getPosition().y <= Y[Part]) {Part = 0; herosprite2.setPosition(0,0);}; break;} -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.