Sada je: 28 ožu 2024, 09:51.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Trebao bi pomoć kod c++ grafičkog programa:kako istovremeno učitati dvostruki stisak tipke?Radi se o winbgim grafici za c++,IDE codeblocks,zasan na windowsu.Dakle imam program koji učitava pravokutnik i trokut na dnu ekrana.Kad stisnem tipku strelica desno,prvi se pomiče desno.Kad stisnem tipku strelica gore i drugi ide desno.Ali kako da oba idu desno istovremeno?
Ovo radim uz upotrebu getch i kbhit,pa uvijek očitava samo jednu tipku.Da li je netko ovo već riješio ili moram uvesti neku biblioteku?Volio bi da odgovori netko tko je ovo već riješio.
Kod: Označi sve
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
using namespace std;

int trokutpomak(int trokutx,char odgovor)
{
 setcolor(WHITE);
 moveto(trokutx,435);
 lineto(trokutx-20,465);
 lineto(trokutx+20,465);
 lineto(trokutx,435);
 if (odgovor==77)
 {
  trokutx=trokutx+5;
 }
 if (odgovor==75)
 {
  trokutx=trokutx-5;
 }
 if (trokutx<=0)
 {
  trokutx=0;
 }
 if (trokutx>=635)
 {
  trokutx=635;
 }
 return trokutx;
}

void trokutcrtaj(int trokutx)
{
 setcolor(BLACK);
 moveto(trokutx,435);
 lineto(trokutx-20,465);
 lineto(trokutx+20,465);
 lineto(trokutx,435);
}

int brodpomak(int brodx,char odgovor)
{
 setcolor(WHITE);
 rectangle(brodx,455,brodx+40,465);
 if (odgovor==72)
 {
  brodx=brodx+5;
 }
 if (brodx>=635)
 {
  brodx=635;
 }
 return brodx;
}

void brodcrtaj(int brodx)
{
 setcolor(BLACK);
 rectangle(brodx,455,brodx+40,465);
}

int main()
{
 int gdriver=9;
 int gmode=2;
 initgraph(&gdriver,&gmode,"");
 setbkcolor(WHITE);
 setcolor(BLACK);
 cleardevice();

 char odgovor = 'd';
 int trokutx=310;
 int brodx=0;

 trokutcrtaj(trokutx);
 brodcrtaj(brodx);

 do
 {
  if (kbhit())
  {
   odgovor = getch();
   trokutx=trokutpomak(trokutx,odgovor);
     if (odgovor==72)
       {
       brodx=brodpomak(brodx,odgovor);
       }
   }

  trokutcrtaj(trokutx);
  brodcrtaj(brodx);

 }
 while (odgovor != 'k');
 return 0;
}
Postovi: 149
Postovi: 149
Pridružen/a: 21 lip 2016, 18:37
Podijelio/la zahvalu: 1 puta
Primio/la zahvalu: 17 puta
Spol: M
OS: mint 13 64bit xfce
Jesi riješio? Ja bih stavio jedan thread za čitanje i pisanje u buffer, a drugi za čitanje buffera i crtanje. HTH
Postovi: 92
Postovi: 92
Pridružen/a: 17 lis 2015, 01:40
Podijelio/la zahvalu: 1 puta
Primio/la zahvalu: 3 puta
Spol: M
OS: Fedora Gnome

Na mreži
Trenutno korisnika/ca: / i 8 gostiju.