SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › создание копии объекта при нажатии на его спрайт и ее передвижение › Ответ в теме: создание копии объекта при нажатии на его спрайт и ее передвижение
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 |
int main() { RenderWindow window(VideoMode(1280, 700), "Lesson 22. kychka-pc.ru"); int count; float timer = 0; count = 0; Level lvl;//создали экземпляр класса уровень lvl.LoadFromFile("map.tmx");//загрузили в него карту, внутри класса с помощью методов он ее обработает. Image easyEnemyImage; easyEnemyImage.loadFromFile("B1.png"); Image TowerImage; TowerImage.loadFromFile("B2.png"); list<Entity*>entites; list<Entity*>::iterator it; Object e = lvl.GetObject("easyEnemy"); list<Entity*>towers; list<Entity*>::iterator wit; Object tw1 = lvl.GetObject("tower1"); bool isMove = false; float dX = 0; float dY = 0; Clock clock; while (window.isOpen()) { float time = clock.getElapsedTime().asMicroseconds(); clock.restart(); time = time / 1000; timer += time; if (timer >= 1000 && count < 10){ entites.push_back(new Enemy(easyEnemyImage, "EasyEnemy", lvl, e.rect.left, e.rect.top, 32, 32)); count++; timer -= 1000; } Vector2i pixelPos = Mouse::getPosition(window); Vector2f pos = window.mapPixelToCoords(pixelPos); Event event; while (window.pollEvent(event)) { if (event.type==Event::MouseButtonPressed) if (event.key.code==Mouse::Left) if (tw1.sprite.getGlobalBounds().contains(pos.x, pos.y)) { dX = pos.x - tw1.sprite.getPosition().x + 16; dY = pos.y - tw1.sprite.getPosition().y + 16; isMove = true; } if (event.type == Event::MouseButtonReleased)//если отпустили клавишу if (event.key.code == Mouse::Left) //а именно левую { isMove = false; //то не можем двигать спрайт tw1.sprite.setColor(Color::White);//и даем ему прежний цвет towers.push_back(new Tower(TowerImage, "tower1", lvl, tw1.rect.left, tw1.rect.top, 32, 32)); } } if (isMove){ tw1.x = pos.x - dX;//<- тут tw1.y = pos.y - dY;//<- тут } for (it = entites.begin(); it != entites.end();it++) { (*it)->update(time); } for (wit = towers.begin(); wit != towers.end(); wit++) { (*wit)->update(time); } //Tower1.update(time); window.clear(Color(77, 83, 140)); lvl.Draw(window);//рисуем новую карту for (it = entites.begin(); it != entites.end(); it++){ window.draw((*it)->sprite); } for (wit = towers.begin(); wit != towers.end(); wit++){ window.draw((*wit)->sprite); } window.display(); } return 0; } |
error C2039:’x': is not a member of ‘Object’