SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › Вывод текста на экран "Game over",очков и времени
В этой теме 4 ответа, 3 участника, последнее обновление LastikPro 7 года/лет, 11 мес. назад.
-
АвторСообщения
-
туплю сижу уже долгое время
не могу понять как вывести на экран счет очков за съеденные яблоки и время текущей игры
пишу змейку и мне необходимо,чтобы когда она сталкивается со своим телом и границей поля выводило на экран “Game Over” и количество набранных очков со временем игры
нуждаюсь в помощи,желательно чтобы показали ЧТО И КУДА вставить,иначе мне нужна будет госпитализация,ибо столько туториалов просмотрено было а результат нулевойC++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206#include <SFML/Graphics.hpp>#include <SFML\Audio.hpp>#include <time.h>using namespace sf;void menu(RenderWindow & window) {Texture menuTexture1, menuTexture2, menuTexture3, aboutTexture, menuBackground;menuTexture1.loadFromFile("images/111.png");menuTexture2.loadFromFile("images/222.png");menuTexture3.loadFromFile("images/333.png");aboutTexture.loadFromFile("images/about.png");menuBackground.loadFromFile("images/fon.jpg");Sprite menu1(menuTexture1), menu2(menuTexture2), menu3(menuTexture3), about(aboutTexture), menuBg(menuBackground);bool isMenu = 1;int menuNum = 0;menu1.setPosition(130, 90);menu2.setPosition(100, 160);menu3.setPosition(210, 238);menuBg.setPosition(0, 0);//////////////////////////////МЕНЮ///////////////////while (isMenu){menu1.setColor(Color::White);menu2.setColor(Color::White);menu3.setColor(Color::White);menuNum = 0;if (IntRect(130, 90, 300, 50).contains(Mouse::getPosition(window))) { menu1.setColor(Color(129, 181, 221)); menuNum = 1; }if (IntRect(100, 160, 300, 50).contains(Mouse::getPosition(window))) { menu2.setColor(Color(129, 181, 221)); menuNum = 2; }if (IntRect(210, 238, 300, 50).contains(Mouse::getPosition(window))) { menu3.setColor(Color(129, 181, 221)); menuNum = 3; }if (Mouse::isButtonPressed(Mouse::Left)){if (menuNum == 1) isMenu = false;if (menuNum == 2) { window.draw(about); window.display(); while (!Keyboard::isKeyPressed(Keyboard::Escape)); }if (menuNum == 3) { window.close(); isMenu = false; }}window.draw(menuBg);window.draw(menu1);window.draw(menu2);window.draw(menu3);window.display();}}int N = 35, M = 25;int size = 17;int w = size*N;int h = size*M;int dir, num = 2;struct Snake{int x, y;} s[100];struct Fruct{int x, y;} a, r, f;void Tick(){for (int i = num; i>0; --i){s[i].x = s[i - 1].x;s[i].y = s[i - 1].y;}if (dir == 0) s[0].y += 1;if (dir == 1) s[0].x -= 1;if (dir == 2) s[0].x += 1;if (dir == 3) s[0].y -= 1;if ((s[0].x == f.x) && (s[0].y == f.y)){num++;f.x = rand() % N;f.y = rand() % M;}if ((s[0].x == r.x) && (s[0].y == r.y)){num++;r.x = rand() % N;r.y = rand() % M;}if ((s[0].x == a.x) && (s[0].y == a.y)){num++;a.x = rand() % N;a.y = rand() % M;}if (s[0].x>N) s[0].x = 0; if (s[0].x<0) s[0].x = N;if (s[0].y>M) s[0].y = 0; if (s[0].y<0) s[0].y = M;for (int i = 1; i<num; i++)if (s[0].x == s[i].x && s[0].y == s[i].y) num = 0;}int main(){srand(time(0));Music music;music.openFromFile("images/Arcade_Fire_-_Photograph_.ogg");music.play();RenderWindow window(VideoMode(w, h), "Snake Game!");menu(window);Texture t1, t2,t3,t4,t5,t6;t1.loadFromFile("images/pink1.png");t2.loadFromFile("images/blue.png");t3.loadFromFile("images/green1.png");t4.loadFromFile("images/green2.png");t5.loadFromFile("images/green3.png");t6.loadFromFile("images/gameover.png");Sprite sprite1(t1);Sprite sprite2(t2);Sprite sprite3(t3);Sprite sprite4(t4);Sprite sprite5(t5);Sprite sprite6(t6);Clock clock;float timer = 0, delay = 0.1;f.x = 3;f.y = 20;r.x = 17;r.y = 10;a.x = 24;a.y = 22;while (window.isOpen()){float time = clock.getElapsedTime().asSeconds();clock.restart();timer += time;Event e;while (window.pollEvent(e)){if (e.type == Event::Closed)window.close();}if (Keyboard::isKeyPressed(Keyboard::Left)) dir = 1;if (Keyboard::isKeyPressed(Keyboard::Right)) dir = 2;if (Keyboard::isKeyPressed(Keyboard::Up)) dir = 3;if (Keyboard::isKeyPressed(Keyboard::Down)) dir = 0;if (timer>delay) { timer = 0; Tick(); }////// draw ///////window.clear();for (int i = 0; i<N; i++)for (int j = 0; j<M; j++){sprite1.setPosition(i*size, j*size); window.draw(sprite1);}for (int i = 0; i<num; i++){sprite2.setPosition(s[i].x*size, s[i].y*size); window.draw(sprite2);}sprite3.setPosition(f.x*size, f.y*size); window.draw(sprite3);sprite4.setPosition(r.x*size, r.y*size); window.draw(sprite4);sprite5.setPosition(a.x*size, a.y*size); window.draw(sprite5);window.display();}return 0;}Не тупи используй sf::Text)
http://www.sfml-dev.org/documentation/2.0/classsf_1_1Text.php
а по подробнее можно?
что и куда
В серии уроков Павла есть урок работы с текстом.
Не уверен что есть что-то более подробнее, чем официальная документация. -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.