Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.712.405
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Platform.loadFromFile("C:\\SFMLGame\\bin\\Debug\\pf.jpeg")  (probao sam i sa .jpg).

 

 

 

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Poruka je uređivana zadnji put pet 17.8.2012 15:37 (FireMan97).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Platform.loadFromFile("C:\\SFMLGame\\bin\\Debug\\pf.jpeg")  (probao sam i sa .jpg).

vidim da si stavio slikovnu datoteku u "\bin\debug\" podfolder, probaj ju staviti u "c:\sfmlgame\" i onda samo napraviti

Platform.loadFromFile("pf.jpg");

 

I uključi si ekstenzije u windows exploreru, tako da ih možeš vidjeti...

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Radi,hvala jos jednom.

 

E sad ovaj game loop,dali bi se to moglo nekako bolje napravit?

 

#include <chrono>
#include <thread>
#include <iostream>
#include <SFML/Graphics.hpp>
#include <windows.h>

const int FRAMES_PER_SECOND = 60;
const int SKIP_TICKS = 1000 / FRAMES_PER_SECOND;

DWORD next_game_tick = GetTickCount();
int sleep_time = 0;

int main()
{
    sf::VideoMode VMode (800, 600, 32);
    sf::RenderWindow Window(VMode, "Game", sf::Style::Default);

    sf::Texture Platform;

    if(!Platform.loadFromFile("pf.jpg"))
        return 1;

    sf::Sprite Sprite;

    Sprite.setTexture(Platform);

    while (Window.isOpen()) // Gameloop
    {
        next_game_tick += SKIP_TICKS;
        sleep_time = next_game_tick - GetTickCount();
        if( sleep_time >= 0 ) { Sleep( sleep_time ); }
        else
        {
           sf::Event Event;
            while (Window.pollEvent(Event))
            {
                switch (Event.type)
                {
                    case sf::Event::Closed: Window.close(); break;
                    default: break;
                }
            }

        Window.clear(sf::Color(0, 255, 255));
        Window.draw(Sprite);
        Window.display();
        }

    }

}

 

 


Imam jos jedan problem,radim na jednostavnom networkingu ali dobivam errore:

 

#include <iostream>
#include <SFML/Network.hpp>

using namespace std;

int main()
{
    sf::UdpSocket Socket;

    char Text[] = "Sent!!";

    cin >> Text;


    if (Socket.send(Text, sizeof(Text), "192.168.0.3", 4456) != sf::Socket::Done)
    {
        cout << "Message sending failed";
    }
    return 0;
}

 

||=== Server, Debug ===|
obj\Debug\main.o||In function `main':|
C:\Users\David\Dropbox\C++\Server\main.cpp|8|undefined reference to `sf::UdpSocket::UdpSocket()'|
C:\Users\David\Dropbox\C++\Server\main.cpp|15|undefined reference to `sf::IpAddress::IpAddress(char const*)'|
C:\Users\David\Dropbox\C++\Server\main.cpp|15|undefined reference to `sf::UdpSocket::send(void const*, unsigned int, sf::IpAddress const&, unsigned short)'|
obj\Debug\main.o||In function `~UdpSocket':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\SFML\Network\UdpSocket.hpp|46|undefined reference to `sf::Socket::~Socket()'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\SFML\Network\UdpSocket.hpp|46|undefined reference to `sf::Socket::~Socket()'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\SFML\Network\UdpSocket.hpp|46|undefined reference to `sf::Socket::~Socket()'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\SFML\Network\UdpSocket.hpp|46|undefined reference to `sf::Socket::~Socket()'|
||=== Build finished: 7 errors, 0 warnings ===|

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Poruka je uređivana zadnji put pet 17.8.2012 16:30 (FireMan97).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

petlja izgleda ok, a što se ovog socket dijela tiče, jesi li linkao taj projekt sa libsfml-network bibliotekom?

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put pet 17.8.2012 17:16 (rustweaver).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Hvala :D

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Znaci imam ova dva programa:

 

Client:

 

#include <SFML/Network.hpp>

using namespace std;

int main()
{
    // Create the UDP socket
    sf::UdpSocket Socket;

    // Bind it (listen) to the port 4567
    if (!Socket.bind(4456))
    {
        //aaaa
    }
    char Buffer[128];
    std::size_t Received;
    sf::IpAddress Sender;
    unsigned short Port;
    if (Socket.receive(Buffer, sizeof(Buffer), Received, Sender, Port) != sf::Socket::Done)
    {
        return 0;
    }

    // Show the address / port of the sender
    std::cout << Sender << ":" << Port << std::endl;

    // Show the message
    std::cout << Buffer << std::endl; // "Hi guys !"

    system("pause");
    return 0;
}

 

i server:

 

#include <iostream>
#include <SFML/Network.hpp>

using namespace std;

int main()
{
    sf::UdpSocket Socket;

    char Text[64] = "Sent!!";

    cin >> Text;


    if (Socket.send(Text, sizeof(Text), "192.168.0.3", 4456) != sf::Socket::Done)
    {
        cout << "Message sending failed";
    }
    system("pause");
    return 0;
}

 

A opet mi ne radi.

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...
A opet mi ne radi.

Prvo, pogledaj na koju IP adresu šalješ, jesi li siguran da je to dobra adresa? Drugo, program koji očekuje podatke mora biti pokrenut prije onoga koji ih šalje.

 

Ali nažalost u tome nije problem, problem je u tome što se socket ne uspjeva bindati, probaj ovo:

 

    if (!Socket.bind(4456))
    {
        //aaaa
    }

 

prepraviti u ovo:

 

    if (!Socket.bind(4456))
    {
        cout<<"Error";
        return 1;
    }

 

Pa ćeš vidjeti. Nemam pojma zašto ne uspjeva, pogledat ću malo.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pokreni oba programa na istom računalu, a za host postavi 127.0.0.1

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

Pokreni oba programa na istom računalu, a za host postavi 127.0.0.1

Ne radi, već sam ja izmjenio adresu na localhost, to mi je prvo palo na pamet. Problem je u bindanju socketa na port, tj. Socket.bind() vraća error, pa mi je onda palo na pamet da možda nije pozvana WSAStartup funkcija, ali to bi bio malo blesav propust.

 

Nije isključeno ni da je do builda, tj da sam ja nešto zabrljao pri kompajliranju SFML-a

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Za ovakve stvari treba koristiti bolje biblioteke u kojima su te stvari dorađene i pojednostavljene. Da se to radi u C++ Builderu sve bi bilo riješeno u par linija coda, s time da te (Indy) komponente automatski koriste multi-threading za mrežne konekcije, po potrebi i pooling, antifreez threadova, zaštitu konekcije kroz SSL/TLS (ako treba) itd itd.. Samo se postavi komponente na formu i podese se propertyji.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put pet 17.8.2012 20:18 (TracerCPP).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Razmisljam o tom C++ Builderu,dali je to dobro za pocetnika?

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

Za ovakve stvari treba koristiti bolje biblioteke u kojima su te stvari dorađene i pojednostavljene.

Pa ironija je u tome što je baš SFML multimedijska biblioteka u kojoj su te stvari "dorađene i pojednostavljene" i to sve sa objektno orjentiranim spinom. Sa sirovim winsockom nemam tih problema :D

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Razmisljam o tom C++ Builderu,dali je to dobro za pocetnika?

Vrlo je jednostavno i brzo se nauči.

rustweaver kaže...
TracerCPP kaže...

Za ovakve stvari treba koristiti bolje biblioteke u kojima su te stvari dorađene i pojednostavljene.

Pa ironija je u tome što je baš SFML multimedijska biblioteka u kojoj su te stvari "dorađene i pojednostavljene" i to sve sa objektno orjentiranim spinom. Sa sirovim winsockom nemam tih problema :D

Sad sam bio na njihovom site-u i piše ovo:

 

Implements a portable layer over TCP and UDP sockets
Easy data transfers through stream-based extensible packets
Classes to use the HTTP and FTP internet protocols

Podrška tek za 4 protokola... bez implementirane multithreaded podrške (sam kreiraj threadove za multi-klijent okruženja).. Daleko je to od dorađenosti {#}.

 

Podrška u C++ Builderu:

Internet direct (Indy) klijenti, serveri, interceptori itd.. Internet direct (Indy) klijenti, serveri, interceptori itd..
 

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Jel ima free verzija?

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...
Daleko je to od dorađenosti {#}.

 

Podrška u C++ Builderu:

Ah, nećemo sada uspoređivati C++ Builder koji je na tržištu više od 10 godina, sa ovom bibliotekicom. {#}

 

To je ipak profesionalni proizvod...

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Jel ima free verzija?

Postojala je, ali više nema. Snađi se kao i većina {#}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
TracerCPP kaže...
Daleko je to od dorađenosti {#}.

 

Podrška u C++ Builderu:

Ah, nećemo sada uspoređivati C++ Builder koji je na tržištu više od 10 godina, sa ovom bibliotekicom. {#}

 

To je ipak profesionalni proizvod...

Te komponente su dostupne i za C# : link

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Jeli dobar Enterprise 6?

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Jeli dobar Enterprise 6?

Rad Studio tj. C++ Builder XE2 je zadnji. Za cca 2 mjeseca dolazi XE3 s podrškom za android i ios.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Razmisljam o tom C++ Builderu,dali je to dobro za pocetnika?

Nope, jer skoro pa nitko ne programira u tome. Ako si na linuxu skini Eclipse CDT, ako si na Win skini VS. Imas free VS2012 Release canditate  za skinuti, a valjda ce i express dati kada izade full verzija iako se nesto suska da nece. :D

Mislim ako ti se da zafrkavati sa hardcore text editorima nitko ti ne brani.  Da ne ispadne da meljem ovako je u FB:

There’s freedom in choosing editors, so the usual suspects –emacs and vim– are quite popular, with some Eclipse and others here and there.

Mozes probati i netbeans(to osobno nisam koristio):

http://stackoverflow.com/questions/89275/best-c-ide-or-editor-for-windows

 

ako mene pitas VS + Visual Assist je najbolja kombinacija, osim sto naravno VA kosta 250$ godisnje, i jos ga nema za Express verzije ako se ne varam. :D

Eclipse CDT me iritirao dok sam radio na njemu, ali nije tako los.

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zoidberg kaže...
FireMan97 kaže...

Razmisljam o tom C++ Builderu,dali je to dobro za pocetnika?

Nope, jer skoro pa nitko ne programira u tome.

Naravno da programira. Samo registriranih developera ima 2.1 milijun (po embarcaderovoj statistici), plus barem tri puta više ih koristi C++ Builder na crno. Još sada kada dođe podrška za android i ios itekako će postati puno popularniji.

 

I uopće nije loš za početnika. Brz je i jednostavan. No nema ga u besplatnoj verziji i to je svakako mana.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Znaci imam ova dva programa:

 

Client:

 

A opet mi ne radi.

Ja sam totalno zabrijao, nakon lutanja po sourceu SFML-a shvatio sam da sam ja nešto krivo shvatio i da onaj tutorijal navodi na krivi trag. Naime status koji UDPSocket::Bind vraća nije samo error, te je pogrešno hvatati greške pomoću:

if (!Socket.bind(4456))

 

Lik koji je pisao tutorial nije ništa stavio unutar if bloka te se njegov kod i dalje izvršavao nakon "greške", dok je moj izbacivao jer sam tu stavio return.

 

Ugl. da skratim. Pobrini se da i u klijentu i serveru imaš identičan broj za port, te da je IP adresa ili stvarna lokalna adresa računala na kojem isprobavaš program ili localhost adresa (127.0.0.1). Prvo pokreni server, a nakon toga klijent. Otipkaj nešto u klijentu i pritisni enter i server će primiti paket.

 

Btw. pogrešno si imenovao programe, server ti je onaj gornji koji čeka paket, a klijent je doljnji koji se spaja na server i šalje mu paket.

 

A ja si sada idem nabaviti papirnatu vrećicu... {#}

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Hvala.

 

Sad imam jedno pitanje,zelim instalirati VS 2010 Express ali imam ponuđene samo zasebne IDE-e,npr Visual C++,Visual C#,Visual Basic,a nemam ono da instaliram i onda kad pokrenem VS da odaberem jezik(full paket).

 

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Poruka je uređivana zadnji put sub 18.8.2012 0:14 (FireMan97).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Zato što je to Visual Studio Express Edition. Moraš skinuti Proffesional, ako si student ili srednjoškolac. Ali pobogu, zašto će ti puna verzija. Express ti je sasvim dovoljan.

13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Koji su key kodovi za strelice gore-dolje-ljevo-desno?

 

 

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Imam problem.

 

case sf::Keyboard::isKeyPressed(sf::Keyboard::Right): std::cout << "Right button pressed" << std::endl; break;

 

Na ovoj liniji dobivam errore.

 

C:\SFMLGame\main.cpp||In function 'int main()':|
C:\SFMLGame\main.cpp|30|error: 'sf::Keyboard::isKeyPressed(sf::Keyboard::Key)' cannot appear in a constant-expression|
C:\SFMLGame\main.cpp|30|error: a function call cannot appear in a constant-expression|
||=== Build finished: 2 errors, 0 warnings ===|

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Koji su key kodovi za strelice gore-dolje-ljevo-desno?

Key kodovi variraju ovisno o izvoru odakle ih dobivaš, tako da nema nekakvog standarda. Tebe vjerojatno zanimaju SFML key kodovi, tj kako čitati input sa tipkovnice.

 

Primjeri kako obraditi različite eventove (uključujući i keyboard event):

http://www.sfml-dev.org/tutorials/2.0/window-events.php

 

Ovdje su ti imena svih tipki na tipkovnici koje možeš koristiti u SFML-u:

http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php

 

A tu također imaš i objašnjeno kako čitati tipke iz tipkovnice bez event sustava, dakle u bilo kojem trenutku (skrolaj dolje ispod popisa tipki)

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

A zasto mi neradi ovaj kod?

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Imam problem.

 

case sf::Keyboard::isKeyPressed(sf::Keyboard::Right): std::cout << "Right button pressed" << std::endl; break;

 

Na ovoj liniji dobivam errore.

Ne, to ne može ići u switch-case

 

Probaj ovako:

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
   std::cout << "Right arrow pressed\n";
}

 

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put sub 18.8.2012 13:08 (rustweaver).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ja sam prije bio napravio ovako:

 

case sf::Event::KeyPressed: sf::Keyboard::Right;      std::cout << "Right button pressed" << std::endl; break;

 

 

Ali pozivalo se kad je bilo koji key bio stisnut.

 

Sad radi,hvala.

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Poruka je uređivana zadnji put sub 18.8.2012 13:02 (FireMan97).
Moj PC  
0 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice