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

gra, dwie czynności na raz

VPS Starter Arubacloud
0 głosów
468 wizyt
pytanie zadane 16 lipca 2018 w C i C++ przez HitMan Użytkownik (850 p.)

witam

Stworzyłem program:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>

using namespace std;

int los()
{
    int a=rand()%10+1;
    return a;
}

void kursor(int x, int y)
{
    COORD c;
    c.X=x-1;
    c.Y=y-1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}


void plansza()
{
    for(int i=4;i<=15;i++)
    {
        kursor(2,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,15);
        cout<<"__";
    }
    for(int i=4;i<=15;i++)
    {
        kursor(26,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,3);
        cout<<"__";
    }


}

void ruch()
{
    int zmienna=0;
    int a=0;
    int x=13;
    int y=7;

    kursor(x,y);
    for(;;)
    {

        cout<<"0";
        Sleep(500);
        cout<<"\b"<<"  ";

        if(x>=24)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=1;

          else if(a==4 || a==5 ||a==6)zmienna=2;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=3;

        }

        else if(x<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=4;

          else if(a==4 || a==5 ||a==6)zmienna=5;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=6;

        }

        else if(y>=14)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=7;

          else if(a==4 || a==5 ||a==6)zmienna=8;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=9;

        }

        else if(y<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=10;

          else if(a==4 || a==5 ||a==6)zmienna=11;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=12;

        }

        if(zmienna==0)kursor(x--,y--);
        else if(zmienna==1)kursor(x--,y--);
        else if(zmienna==2)kursor(x--,y);
        else if(zmienna==3)kursor(x--,y++);
        else if(zmienna==4)kursor(x++,y++);
        else if(zmienna==5)kursor(x++,y);
        else if(zmienna==6)kursor(x++,y--);
        else if(zmienna==7)kursor(x--,y--);
        else if(zmienna==8)kursor(x,y--);
        else if(zmienna==9)kursor(x++,y--);
        else if(zmienna==10)kursor(x--,y++);
        else if(zmienna==11)kursor(x,y++);
        else if(zmienna==12)kursor(x++,y++);

        kursor(x,y);


    }

}

int main()
{
    srand(time(NULL));
    plansza();
    ruch();
    kursor(30,30);
    system("pause");
    return 0;
}

i chciałbym dodać tam kładkę, która była by poruszana za pomocą klawiatury. mój problem jest taki, ży jeżeli dodam instrukcję cin lub getchar cały program się zatrzyma i "zero" nie będzie się poruszać dopóki nie wczytam znaku. Wie ktoś jak można pogodzić ze sobą te dwie czynności?

3 odpowiedzi

0 głosów
odpowiedź 16 lipca 2018 przez SimiVoid Pasjonat (19,790 p.)
Jedną z opcji pogodzenia tych dwóch czynności jest zastosowanie wielowątkowości w twoim programie.
komentarz 16 lipca 2018 przez HitMan Użytkownik (850 p.)
A jak się z tego korzysta.
komentarz 16 lipca 2018 przez SimiVoid Pasjonat (19,790 p.)

Tutaj zamieszczam przykład:

// thread example
#include <iostream>       // std::cout
#include <thread>         // std::thread
 
void foo() 
{
  // do stuff...
}

void bar(int x)
{
  // do stuff...
}

int main() 
{
  std::thread first (foo);     // spawn new thread that calls foo()
  std::thread second (bar,0);  // spawn new thread that calls bar(0)

  std::cout << "main, foo and bar now execute concurrently...\n";

  // synchronize threads:
  first.join();                // pauses until first finishes
  second.join();               // pauses until second finishes

  std::cout << "foo and bar completed.\n";

  return 0;
}

 

komentarz 16 lipca 2018 przez HitMan Użytkownik (850 p.)

Przy próbie skompilowania stworzył się nowy plik c++0x_warning.h:

// Copyright (C) 2007-2015 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file bits/c++0x_warning.h
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{iosfwd}
 */

#ifndef _CXX0X_WARNING_H
#define _CXX0X_WARNING_H 1

#if __cplusplus < 201103L
#error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif

#endif

Programuje w code::blocks

komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)
Do tego przykładoweko programu można dodać wjęcej funkcji?
komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

Częściowy sukces jest, aczykolwiek:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <thread>

using namespace std;

int bx=13;
int by=13;

int los()
{
    int a=rand()%10+1;
    return a;
}

void kursor(int x, int y)
{
    COORD c;
    c.X=x-1;
    c.Y=y-1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}


void plansza()
{
    for(int i=4;i<=15;i++)
    {
        kursor(2,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,15);
        cout<<"__";
    }
    for(int i=4;i<=15;i++)
    {
        kursor(26,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,3);
        cout<<"__";
    }


}

void ruch()
{
    int zmienna=0;
    int a=0;
    int x=13;
    int y=7;

    kursor(x,y);
    for(;;)
    {

        cout<<"0";
        Sleep(100);
        cout<<"\b"<<"  ";

        if(x>=24)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=1;

          else if(a==4 || a==5 ||a==6)zmienna=2;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=3;

        }

        else if(x<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=4;

          else if(a==4 || a==5 ||a==6)zmienna=5;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=6;

        }

        else if(y>=14)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=7;

          else if(a==4 || a==5 ||a==6)zmienna=8;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=9;

        }

        else if(y<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=10;

          else if(a==4 || a==5 ||a==6)zmienna=11;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=12;

        }

        if(zmienna==0)kursor(x--,y--);
        else if(zmienna==1)kursor(x--,y--);
        else if(zmienna==2)kursor(x--,y);
        else if(zmienna==3)kursor(x--,y++);
        else if(zmienna==4)kursor(x++,y++);
        else if(zmienna==5)kursor(x++,y);
        else if(zmienna==6)kursor(x++,y--);
        else if(zmienna==7)kursor(x--,y--);
        else if(zmienna==8)kursor(x,y--);
        else if(zmienna==9)kursor(x++,y--);
        else if(zmienna==10)kursor(x--,y++);
        else if(zmienna==11)kursor(x,y++);
        else if(zmienna==12)kursor(x++,y++);

        kursor(x,y);


    }

}

void bohater()
{
    char wybor;
    kursor(bx,by);
    cout<<"^";
    for(;;)
    {
    wybor=getch();

    if(wybor=='a')
    {
        if(bx<=4)
        {
        }
        else
        {
        cout<<"\b"<<" ";
        kursor(bx--,by);
        cout<<"^";
        }
    }
    else if(wybor=='d')
    {
        if(bx>=24)
        {
        }
        else
        {
        cout<<"\b"<<" ";
        kursor(bx++,by);
        cout<<"^";
        }
    }

    }
}

int main()
{

    srand(time(NULL));
    plansza();

    thread first (ruch);     // spawn new thread that calls foo()
    thread second (bohater);  // spawn new thread that calls bar(0)

    // synchronize threads:
    first.join();                // pauses until first finishes
    second.join();               // pauses until second finishes

    return 0;
}

 

komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

W tym programie też jest coś nie tak:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <thread>

using namespace std;

int bx=5;
int by=14;
int x=5;
int y=14;
int tablica[6];
int stala=4;

void kursor(int x, int y)
{
  COORD c;
  c.X=x-1;
  c.Y=y-1;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

void plansza()
{
    for(int i=4;i<=15;i++)
    {
        kursor(2,i);
        cout<<"|";
    }
    for(int u=3;u<=15;u++)
    {
        kursor(u,15);
        cout<<"__";
    }
    for(int i=4;i<=15;i++)
    {
        kursor(16,i);
        cout<<"|";
    }



}

void wrog()
{

    for(;;)
    {
        for(int i=3; i<=14; i++)
        {
            kursor(i,stala);
            cout<<" ";
        }
        stala++;
        for(int i=1;i<=4;i++)
        {
            kursor(tablica[i],stala);
            cout<<"?";
        }

        if(stala==14)
        {
            kursor(20,20);
            cout<<"przegrales";
            Sleep(2000);
            exit(0);
        }
        Sleep(1000);
    }
}

void bohater()
{
    char wybor;
    kursor(bx,by);
    cout<<"^";
    for(;;)
    {
    wybor=getch();

    if(wybor=='a')
    {
        if(bx<=4)
        {
        }
        else
        {
        cout<<"\b"<<" ";
        kursor(bx--,by);
        cout<<"^";
        }
    }
    else if(wybor=='d')
    {
        if(bx>=24)
        {
        }
        else
        {
        cout<<"\b"<<" ";
        kursor(bx++,by);
        cout<<"^";
        }
    }
    else if(wybor=='e')
    {
        bx--;
        for(int i=13;i>=4;i--)
        {
            kursor(bx,i);
            cout<<"!";
        }

        Sleep(500);

        for(int i=13;i>=4;i--)
        {
            kursor(bx,i);
            cout<<" ";
        }

        for(int t=1;t<=4;t++)
        {
            if(x==tablica[t])
                tablica[t]=1000;
        }
        bx++;
    }

    }
}

int main()
{

    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(10));
    cout<<"!Witaj w grze! "<<endl;
    cout<<"MADE BY JA"<<endl;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(7));

    plansza();
    kursor(x,y);
    srand(time(NULL));
    int a;
    for(int i=1;i<=4;i++)
    {

        a=rand()%10+4;
        kursor(a,4);
        cout<<"?";
        tablica[i]=a;
    }
    kursor(x,y);


    thread first (wrog);
    thread second (bohater);

    first.join();
    second.join();

    return 0;
}


 

komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

Coś poprawiłem, i teraz to wygląda tak:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <thread>

using namespace std;

int bx=13;
int by=13;

int los()
{
    int a=rand()%10+1;
    return a;
}

void kursor(int x, int y)
{
    COORD c;
    c.X=x-1;
    c.Y=y-1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}


void plansza()
{
    for(int i=4;i<=15;i++)
    {
        kursor(2,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,15);
        cout<<"__";
    }
    for(int i=4;i<=15;i++)
    {
        kursor(26,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,3);
        cout<<"__";
    }


}

void ruch()
{
    int zmienna=0;
    int a=0;
    int x=13;
    int y=7;

    kursor(x,y);
    for(;;)
    {

        cout<<"0";
        Sleep(200);
        cout<<"\b"<<"  ";

        if(x>=24)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=1;

          else if(a==4 || a==5 ||a==6)zmienna=2;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=3;

        }

        else if(x<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=4;

          else if(a==4 || a==5 ||a==6)zmienna=5;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=6;

        }

        else if(y>=15)
        {
          cout<<"przegrales";
          Sleep(2000);
          exit(0);
        }

        else if(y<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=10;

          else if(a==4 || a==5 ||a==6)zmienna=11;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=12;

        }

        else if(x==bx && y==by)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=7;

          else if(a==4 || a==5 ||a==6)zmienna=8;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=9;
        }

        if(zmienna==0)kursor(x--,y--);
        else if(zmienna==1)kursor(x--,y--);
        else if(zmienna==2)kursor(x--,y);
        else if(zmienna==3)kursor(x--,y++);
        else if(zmienna==4)kursor(x++,y++);
        else if(zmienna==5)kursor(x++,y);
        else if(zmienna==6)kursor(x++,y--);
        else if(zmienna==7)kursor(x--,y--);
        else if(zmienna==8)kursor(x,y--);
        else if(zmienna==9)kursor(x++,y--);
        else if(zmienna==10)kursor(x--,y++);
        else if(zmienna==11)kursor(x,y++);
        else if(zmienna==12)kursor(x++,y++);

        kursor(x,y);


    }

}

void bohater()
{
    int czy=14;
    char wybor;
    kursor(bx,by);
    cout<<"^";
    for(;;)
    {
    wybor=getch();

    for(czy=14; czy>=4; czy--)
    {
        for(int i=4; i<=24; i++)
        {
            kursor(i,czy);
            cout<<" ";
        }
    }
    if(wybor=='a')
    {
        if(bx<=4)
        {
        }
        else
        {
        //cout<<"\b"<<" ";
        kursor(bx--,by);
        cout<<"^";
        }
    }
    if(wybor=='d')
    {
        if(bx>=24)
        {
        }
        else
        {
        //cout<<"\b"<<" ";
        kursor(bx++,by);
        cout<<"^";
        }
    }
    cout<<"^";

    }
}

int main()
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(10));
    srand(time(NULL));
    plansza();

    thread first (ruch);     // spawn new thread that calls foo()
    thread second (bohater);  // spawn new thread that calls bar(0)

    // synchronize threads:
    first.join();                // pauses until first finishes
    second.join();               // pauses until second finishes

    return 0;
}

 

0 głosów
odpowiedź 17 lipca 2018 przez Munvik Dyskutant (9,350 p.)
Jest taka funkcja jak khbit() albo w Windowsie GetKeyState(...)

Można użyć też biblioteki. SFML posiada taką funkcjonalność o której piszesz. Tam normalnie sprawdzasz ifem czy został wcisniety dany klawisz. Np. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) co oznacza czy wcisniety została wcisnieta strzałka do góry.

Poza tym tak jak inny użytkownik napisał jeszcze istnieje wielowątkowanie.
komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)
A jak dodać sfml do code::blocks? Próbowałem, i jak narazie bez skutku.
komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

będę to musiał robić osobno do każdego projektu?

komentarz 17 lipca 2018 przez fenq80 Bywalec (2,940 p.)
Tak. Musisz dołączać odpowiednie dll-ki do każdego nowego projektu. Ja ze swojej strony polecam przesiąść się na visual studio. Tam jest coś takiego jak Nuget który automatycznie zlinkuje odpowiednie pliki. Po za tym w vs masz łatwy w użyciu debugger który często pomaga wyłapać dziwne błędy.
komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

Po dodaniu do code::blocks bibliotek wdłóg instrukcji (dodałem rozszerzenia s-d.a) wyświetlają mi się takie błędy:

||=== Build: Debug in sfml2 (compiler: GNU GCC Compiler) ===|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget5clearERKNS_5ColorE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|152|undefined reference to `glClearColor@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|153|undefined reference to `glClear@4'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget4drawEPKNS_6VertexEjNS_13PrimitiveTypeERKNS_12RenderStatesE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|286|undefined reference to `glEnableClientState@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|288|undefined reference to `glDisableClientState@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|301|undefined reference to `glVertexPointer@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|302|undefined reference to `glColorPointer@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|304|undefined reference to `glTexCoordPointer@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|311|undefined reference to `glTexCoordPointer@16'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget4drawERKNS_12VertexBufferEjjRKNS_12RenderStatesE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|371|undefined reference to `glEnableClientState@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|373|undefined reference to `glVertexPointer@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|374|undefined reference to `glColorPointer@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|375|undefined reference to `glTexCoordPointer@16'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget12pushGLStatesEv':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|437|undefined reference to `glGetError@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|447|undefined reference to `glPushClientAttrib@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|448|undefined reference to `glPushAttrib@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|450|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|451|undefined reference to `glPushMatrix@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|452|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|453|undefined reference to `glPushMatrix@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|454|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|455|undefined reference to `glPushMatrix@0'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget11popGLStatesEv':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|467|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|468|undefined reference to `glPopMatrix@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|469|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|470|undefined reference to `glPopMatrix@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|471|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|472|undefined reference to `glPopMatrix@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|474|undefined reference to `glPopClientAttrib@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|475|undefined reference to `glPopAttrib@0'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget13resetGLStatesEv':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|507|undefined reference to `glDisable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|508|undefined reference to `glDisable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|509|undefined reference to `glDisable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|510|undefined reference to `glDisable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|511|undefined reference to `glEnable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|512|undefined reference to `glEnable@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|513|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|514|undefined reference to `glLoadIdentity@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|515|undefined reference to `glEnableClientState@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|516|undefined reference to `glEnableClientState@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|517|undefined reference to `glEnableClientState@4'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget16applyCurrentViewEv':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|559|undefined reference to `glViewport@16'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|562|undefined reference to `glMatrixMode@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|563|undefined reference to `glLoadMatrixf@4'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|566|undefined reference to `glMatrixMode@4'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget14applyBlendModeERKNS_9BlendModeE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|584|undefined reference to `glBlendFunc@8'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget14applyTransformERKNS_9TransformE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|626|undefined reference to `glLoadIdentity@0'|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|628|undefined reference to `glLoadMatrixf@4'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget9setupDrawEbRKNS_12RenderStatesE':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|659|undefined reference to `glLoadIdentity@0'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget14drawPrimitivesENS_13PrimitiveTypeEjj':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|707|undefined reference to `glDrawArrays@12'|
..\..\..\SFML-2.5.0\lib\libsfml-graphics-s-d.a(RenderTextureImplFBO.cpp.obj)||In function `ZN2sf4priv20RenderTextureImplFBO27getMaximumAntialiasingLevelEv':|
D:\Programming\C++\Releases\_Sources\SFML\src\SFML\Graphics\RenderTextureImplFBO.cpp|181|undefined reference to `glGetIntegerv@8'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

 

komentarz 18 lipca 2018 przez Munvik Dyskutant (9,350 p.)
Niestety z C:D Tobie nie pomogę ale jak będziesz miał problem z VS to pisz.
0 głosów
odpowiedź 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

Wątpię by rozsądnym  było rzucanie Cię na głęboką wodę programowania wielowątkowego (wnioskuję na podstawie Twojego kodu, że jesteś na początku swojej ścieżki), stąd szczególnie polecę Tobie 

kbhit()

Przykład użycia znajdziesz w tym artykule 

LINK

Pozdrawiam

komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)
Skąd mam wiedzieć jaki znak został wprowadzony? Ona mówi jedynie czy jakiś był.
komentarz 17 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
while(true){
    if(kbhit()){
        char key = getch();
    }
}

 

komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

Oczywiście 

while(true)
{
//costam
}

sprawia, że pętla jest nieskończona. Możesz na przykład dodać do swojej gry, że ta kończy swoje działanie po kliknięciu ESC

char key;

//dopoki nie kliknieto ESC
while(key != 27)
{
//przechwytywanie klawisza
    if(kbhit())
   {
        key = getch();
    }

//tutaj już masz swój kod gry
}

 

komentarz 17 lipca 2018 przez HitMan Użytkownik (850 p.)

To sprawia, że gra się bardzo zacina:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <thread>

using namespace std;

int bx=13;
int by=13;
char key;
int czy=14;

int los()
{
    int a=rand()%10+1;
    return a;
}

void kursor(int x, int y)
{
    COORD c;
    c.X=x-1;
    c.Y=y-1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}


void plansza()
{
    for(int i=4;i<=15;i++)
    {
        kursor(2,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,15);
        cout<<"__";
    }
    for(int i=4;i<=15;i++)
    {
        kursor(26,i);
        cout<<"|";
    }
    for(int u=3;u<=25;u++)
    {
        kursor(u,3);
        cout<<"__";
    }


}

void bohater()
{

    kursor(bx,by);
    cout<<"^";

    for(czy=14; czy>=4; czy--)
    {
        for(int i=4; i<=24; i++)
        {
            kursor(i,czy);
            cout<<" ";
        }
    }
    if(key=='a')
    {
        if(bx<=4)
        {
        }
        else
        {
        //cout<<"\b"<<" ";
        kursor(bx--,by);
        cout<<"^";
        }
    }
    if(key=='d')
    {
        if(bx>=24)
        {
        }
        else
        {
        //cout<<"\b"<<" ";
        kursor(bx++,by);
        cout<<"^";
        }
    }
    cout<<"^";

}

void ruch()
{
    int zmienna=0;
    int a=0;
    int x=13;
    int y=7;

    kursor(x,y);
    for(;;)
    {
        Sleep(500);
        cout<<"\b"<<"  ";

        if(x>=24)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=1;

          else if(a==4 || a==5 ||a==6)zmienna=2;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=3;

        }

        else if(x<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=4;

          else if(a==4 || a==5 ||a==6)zmienna=5;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=6;

        }

        else if(y>=15)
        {
          cout<<"przegrales";
          Sleep(2000);
          exit(0);
        }

        else if(y<=4)
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=10;

          else if(a==4 || a==5 ||a==6)zmienna=11;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=12;

        }

        else if(x==bx && y==by )
        {
          a=los();
          if(a==1 || a==2 ||a==3)zmienna=7;

          else if(a==4 || a==5 ||a==6)zmienna=8;

          else if(a==7 || a==8 ||a==9 || a==10)zmienna=9;

        }

        if(zmienna==0)kursor(x--,y--);
        else if(zmienna==1)kursor(x--,y--);
        else if(zmienna==2)kursor(x--,y);
        else if(zmienna==3)kursor(x--,y++);
        else if(zmienna==4)kursor(x++,y++);
        else if(zmienna==5)kursor(x++,y);
        else if(zmienna==6)kursor(x++,y--);
        else if(zmienna==7)kursor(x--,y--);
        else if(zmienna==8)kursor(x,y--);
        else if(zmienna==9)kursor(x++,y--);
        else if(zmienna==10)kursor(x--,y++);
        else if(zmienna==11)kursor(x,y++);
        else if(zmienna==12)kursor(x++,y++);

        kursor(x,y);
        cout<<"0";

        if(kbhit())
        {
        key = getch();
        bohater();
        kursor(x,y);
        }

    }

}



int main()
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(10));
    srand(time(NULL));
    plansza();
    ruch();

    return 0;
}

 

komentarz 18 lipca 2018 przez Munvik Dyskutant (9,350 p.)
Jak dajesz na poczatku Sleep(500) to nie dziwne ze sie zacina
komentarz 18 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
Dodatkowo zamiast sleep(500) użyj std::this_thread::sleep_for(std::chrono::milliseseconds())

Podobne pytania

0 głosów
2 odpowiedzi 909 wizyt
pytanie zadane 5 kwietnia 2018 w C# przez lukaszvip166 Początkujący (300 p.)
0 głosów
1 odpowiedź 433 wizyt
pytanie zadane 21 kwietnia 2022 w C# przez Idezam Początkujący (410 p.)
0 głosów
1 odpowiedź 197 wizyt
pytanie zadane 13 maja 2021 w Java przez Sneaky4Coding Nowicjusz (180 p.)

93,018 zapytań

141,984 odpowiedzi

321,282 komentarzy

62,364 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...