• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rand generuje liczbę z przecinkiem?

Object Storage Arubacloud
0 głosów
227 wizyt
pytanie zadane 9 kwietnia 2016 w C i C++ przez niezalogowany

Witam. Piszę grę w SFML'u typu snake i gdy robię losowe generowanie kropki (do zjedzenia przez węża) to przyjmuje ona pozycję z przecinkiem, pomimo, że wartość jest zapisywana w incie.

 

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
#include <conio.h>
#include <iostream>

int posx, posy;
int punktx = 150;
int punkty = 100;

int score;

int main()
{
	sf::RenderWindow gra(sf::VideoMode(800, 480, 64), "PRO-SNAKE 1337"/*, sf::Style::Fullscreen*/); //tworzy okno

	sf::Texture character;
	character.loadFromFile("character2.png");
	sf::Texture point;
	point.loadFromFile("point.png");

	sf::Sprite postac;
	postac.setTexture(character);
	sf::Sprite punkt;
	punkt.setTexture(point);

	while (gra.isOpen()) {
		sf::Event odczytywanie; //tworzy eventy
		while (gra.pollEvent(odczytywanie)) {
			if (odczytywanie.type == sf::Event::Closed) { //jesli chcemy zamknac okno
				gra.close();
			}
				if (odczytywanie.type == sf::Event::KeyPressed && odczytywanie.key.code == sf::Keyboard::Escape) {
					gra.close(); //jesli kliknelismy ESC
				}
				if (odczytywanie.type == sf::Event::KeyPressed && odczytywanie.key.code == sf::Keyboard::W) {
					if (posy > 0) {
						posy -= 10;
					}
				}
				if (odczytywanie.type == sf::Event::KeyPressed && odczytywanie.key.code == sf::Keyboard::S) {
					if (posy < 470) {
						posy += 10;
					}
				}
				if (odczytywanie.type == sf::Event::KeyPressed && odczytywanie.key.code == sf::Keyboard::A) {
					if (posx > 0) {
						posx -= 10;
					}
				}
				if (odczytywanie.type == sf::Event::KeyPressed && odczytywanie.key.code == sf::Keyboard::D) {
					if (posx < 790) {
						posx += 10;
					}
				}
		}
		//koniec petli
		gra.clear(sf::Color(255, 255, 255));

		gra.draw(postac);
		gra.draw(punkt);
		
		postac.setPosition(posx, posy);
		punkt.setPosition(punktx, punkty);
		
		std::cout << "Twoja pozycja: " << posx << "x, " << posy << "y." << std::endl;
		std::cout << "Twoj wynik: " << score << std::endl;

		gra.display();

		if (posx==punktx&&posy==punkty) {
			score++;
			srand(time(0));
			int randpunktx = rand() % 790 + 1;
			punktx = randpunktx;
			punkt.setPosition(punktx, punkty);
		}
	}
	return 0;
}

Działa, to tak, że oś X punktu do zjedzenia przyjmuje taką wartość, że moja postać n ie jest w stanie w nią wejść, tak jakby zamiast X = 100 miała X = 100.5.

1 odpowiedź

0 głosów
odpowiedź 9 kwietnia 2016 przez Ukis Gaduła (4,580 p.)
wybrane 9 kwietnia 2016
 
Najlepsza
Wąż przesuwa się o 10 jednostek, więc rand musiałby wylosować wielokrotność 10, żeby można było wejść na ten punkt. Ale rand normalnie losuje liczbę całkowitą.
komentarz 9 kwietnia 2016 przez niezalogowany
Dzięki! :-)

Podobne pytania

0 głosów
1 odpowiedź 494 wizyt
pytanie zadane 24 maja 2017 w C i C++ przez MagicznyJasio Użytkownik (580 p.)
0 głosów
2 odpowiedzi 371 wizyt
0 głosów
1 odpowiedź 81 wizyt
pytanie zadane 19 października 2016 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...