Ir ao conteúdo
  • Cadastre-se

Daniel Bittencourt

Membro Pleno
  • Posts

    75
  • Cadastrado em

  • Última visita

Reputação

40
  1. Bom eu não conheço a função, mas parece que não adiciona algarismos nulos, como vê aqui no código de exemplo quando fala para por 9 casas: https://www.cplusplus.com/reference/iomanip/setprecision/
  2. Bem, há um tempo atrás criei um projeto em c++ e criei o .exe. Passei esse .exe para um amigo e gerou vários arquivos típicos de projeto dev c++( os quais não me lembro o nome). Agora eu queria fazer um outro projeto mas o exe não vai ficar só comigo, quero passar para outras pessoas. Eu acho isso desses arquivos serem gerados nas outras máquinas bem estranho e gostaria de escondê-los, aproveitando dessa situação, gostaria saber também como as pessoas criam arquivos .exe e conseguem por fora de vista os sprites e tudo mais, sendo necessário usar vários processo para achar.
  3. vou dar uma conferida depois já volto para mostrar os resultados!!
  4. Bom dia!!! Eu estou instalando allegro 5 no meu ambiente de programação e quando faço: #include <allegro5/allegro.h> int main(){ } para testar, eis que me aparece isso: [Error] allegro5/platform/alplatf.h: No such file or directory bom, instintivamente, segui o caminho do arquivo não encontrado, pus em ordem alfabética e eis que me deparo com: o arquivo .h não existe, apenas um com mesmo nome sendo um CMAKE. o que eu faço? Nota: eu também olhei o arquivo que incluia o alplatf e o include estava assim: #include "allegro5/platform/alplatf.h" Nota 2: o jeito que estou instalando é simplesmente por as bibliotecas do allegro na pasta include da plataforma, onde já tem as bibliotecas normais c e c++. nota 3: eu pus // no include do alplatf e deram muitos erros, também tentei acrescentar o cmake dps do .h e deram outros erros.
  5. @Benjamin Breeg tem razão... eu acho melhor não arrumar uma gambiarra dessas, não tem necessidade... vou tentar instalar o 5 de uma vez
  6. @Ricardo_Nascimento não, um vetor é apenas uma forma mais fácil de se referir a algumas variáveis ou para declarar várias juntas. exemplo: int numero[40],valor=0; for(int conta=0;conta<40;conta++){ numero[conta]=valor; valor+=30; } você economiza um tempo do que fazer isso: int numero0=0,numero1 = 30,numero2 = 60,numero3 = 90,numero4 = 120,numero5 = 150.....numero40=1200; imagina escrever 40 declarações '-' no primeiro exemplo,a parte do int facilita na declaração e o for em se referir mais fácil com o "indíce'' da variável. esse ''indíce'' facilita muito em muitos casos. no caso de de um mdc de quatro números: mdc(mdc(num1,num2),mdc(num3,num4)); cinco numeros: mdc(mdc(mdc(num1,num2),num3),mdc(num4,num5)); seis: mdc(mdc(mdc(num1,num2),num3),mdc(mdc(num4,num5),num6)); obvio que no caso de muitos números é muito mais fácil fazer como o midori falou: //4 números int x = mdc(mdc(num1,num2),num3); int res = mdc(x,num4); //ou então assim, fácil de entender, mas maior: int x = mdc(num1,num2); int y = mdc(x,num3); int res = mdc(y,num4); //5 números, como eu faria: int x = mdc(num1,num2); int y = mdc(x,mdc(num3,num4)); int res = mdc(y,num5); dá para saber como prosseguir se precisar correto?
  7. bom,o compilador vai ver a 1 função e vai ver qual os dois números que vão ser os do calculo do mdc. então aí no primeiro número tem a função do mdc correto? então o valor do pimeiro número é o valor dessa função. porque essa fução também é um int , mas com parametros( os números que vão ser referencia para a função). então é a mesma coisa que por uma variavel int nesse lugar. Mas qual é o valor dessa função? É o valor de retorno. e qual é o valor de retorno? o mdc dos números dentro dos parenteses. Então basicamente quando o compilador ver o primeiro parametro, ele vê uma variável e olha o valor dessa variavel, que é o mdc dos dois primeiros números, depois disso olha o depois dessa 2 função e ve um numero. Então calcula o mdc dos dois primeiros com o terceiro. Resumo: a 1 função olha os valores que deve calcular o mdc o 1 valor é o retorno de outro mdc pega o resultado desse 2 mdc e a 1 função faz o mdc desse resultado com o outro número que recebeu, o num3. É meio difícil de explicar, espero que entenda
  8. @Benjamin Breeg basicamente o que eu quis dizer foi usar allegro para abrir uma imagem e saber a cor e posição de cada pixel dela. a parte de por a imagem na tela, eu deixo na WinApi32. Não vejo muita possibilidade de conflito, por que no código que eu quero por a tela cheia uso WinApi32 e Allegro 4 sem nenhum erro e com as duas bibliotecas funcionando bonitinhas. Se o conflito for as funções de bitmap da windows.h, já está resolvido, mudei de struct BITMAP da winapi32 para BiTMAP sempre que é dito. tirou as palavras da minha boca. Eu vou tentar arrumar um jeito de fazer o código funcionar Bom, provavelmente o motivo de ter gerado a janela pequena, bom não foi de eu ter deixado as medidas pequenas ou não definidas. Bem digamos que eu misturei o codigo que já vem pronto quando cria um projeto com allegro com o da janela. E eu tirei a parte de iniciar o gfx, mas... não tirei a parte que olhava se a variavel de retorno do gfx era igual a 0 para saber se ocorreu erro.. e nessa hora que olha o valor dela abria uma pequena messagebox e não deixava o programa prosseguir, por isso achei que a janela estava pequena. Basicamente fiz isso: // res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); } refiz o codigo( porque havia excluido), vi isso e concertei. Agora o programa pos o objetivo que era a linha na janela. Mas não uma, nem duas, nem três e sim muitas janelas. Porque gera isso, não sei, mas sei que se alguém testar o código basta clicar com o botão direito na janela na barra de tarefas, clicar em fechar todas, dar cntrl.+ shift + esc e descer tudo no gerenciador de tarefas e fechar a janela na primeira linha das janelas iguais assim: depois, cliquem em cancelar na janela de erro. por fim, o código: #include <allegro.h> #include <windows.h> void init(); void deinit(); static HWND sHwnd; static COLORREF blue=RGB(0,0,255); void SetWindowHandle(HWND hwnd) { sHwnd=hwnd; } void setPixel(int x,int y,COLORREF& color=blue) { if(sHwnd==NULL) { MessageBox(NULL,"sHwnd was not initialized !","Error",MB_OK|MB_ICONERROR); exit(0); } HDC hdc=GetDC(sHwnd); SetPixel(hdc,x,y,color); ReleaseDC(sHwnd,hdc); return; // NEVERREACH // } void drawLineBresenham(int xa, int ya, int xb, int yb) { int dx = abs(xa - xb), dy = abs(ya - yb); int p = 2 * dy - dx; int twoDy = 2 * dy, twoDyDx = 2 * (dy - dx); int x, y, xEnd; if (xa > xb) { x = xb; y = yb; xEnd = xa; } else { x = xa; y = ya; xEnd = xb; } setPixel(x, y); while(x < xEnd) { x++; if(p < 0) p += twoDy; else { y++; p += twoDyDx; } setPixel(x, y); } } void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ } void deinit() { clear_keybuf(); /* add other deinitializations here */ } LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { init(); SetWindowHandle(hwnd); drawLineBresenham(20,30,90,50); deinit(); return DefWindowProc(hwnd,message,wParam,lParam); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow) { static TCHAR szAppName[] = TEXT("Straight Line"); WNDCLASS wndclass; wndclass.style = CS_HREDRAW|CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; // Register the window // if(!RegisterClass(&wndclass)) { MessageBox(NULL,"Registering the class failled","Error",MB_OK|MB_ICONERROR); exit(0); } // CreateWindow // HWND hwnd=CreateWindow(szAppName,"Bresenham's Algorithm - Programming Techniques", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if(!hwnd) { MessageBox(NULL,"Window Creation Failed!","Error",MB_OK); exit(0); } // ShowWindow and UpdateWindow // ShowWindow(hwnd,iCmdShow); UpdateWindow(hwnd); // Message Loop // MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } /* return no error to the operating system */ return 0; }
  9. Eu tive uma ideia hoje para resolver esse problema: se eu criasse uma janela com a própria windows.h, que já vem no meu IDE, e então eu simplesmente uso algo parecido com: BITMAP *imagem = load_bitmap("img.bmp",NULL); for(int conta = 0; conta <=imagem->w;conta++){ for(int conta2 = 0; conta2<=imagem->h;conta2++){ int pixel = getpixel ( cara, 0, 0 ) ; int red = getr(pixel); int green = getg(pixel); int blue = getb(pixel); static COLOREFF color = RGB(red,green,blue); setPixel(color,conta,conta2); } } com setPixel escrevendo na janela criada com windows.h. O problema é a janela de windows.h ativada com allegro eu fiz um teste e a janela saiu minúscula e eu não entendo dessa parte de criar janelas. Seria possível fazer o que eu estou pensando? eu acho que o arquivo foi excluido.
  10. @Visitante: btião testei e funcionou perfeitamente... joguei nos 3 modos na mesma execução... e funcionou 100%
  11. Bom, eu precisava deixar a tela cheia, mas mostrando a barra de tarefas, por que sempre que pesquisou enche a tela inteira, e não deixa a barra de tarefas visível, tendo que fechar a janela para mudar de app.
  12. @Flávio Pedroza mt obrigado funcionou perfeitamente!!!!!
  13. Bom dia, eu estou fazendo um jogo online com c++ e allegro e bem... Quando eu vou testar (com somente 2 clientes) demora cerca de 2 minutos para andar 5 posições em cada cliente. isso ocorre porque os clientes ficam esperando receberem informação do server ,mas para ele enviar, o outro cliente tem que enviar primeiro e esse cliente só envia se estiver selecionado. Basicamente se eu quero andar em um dos clientes eu tenho que ficar pressionando a seta na direção que eu quero e trocar de janela rapidamente para rodar os clientes. isso chega a ser desgastante. alguém sabe um metódo de uma janela allegro (eu uso o tipo gfx) ser rodada sem estiver selecionada? bom eu consegui pôr um modo de se mover sem ter que esperar receber informações do servidor(com beginthread), mas o problema é que o server ainda espera receber para enviar, o que faz com que se você está com o jogo no plano de fundo, os outros players ficam sem receber as informações do server, o que quebra o jogo
  14. Bom, estou fazendo um programa em c++ com winsock 2, mas ocorrem vários erros em relação a winsock2, prinicpalmente em send() e recv(), então eu acredito que deveria usar uma biblioteca de terceiros(de programação tcp/ip) para facilitar. Alguém recomenda uma e consegue me ensinar a instalação? preciso que ensinem por que eu fiquei literalmente 11 meses tentando instalar allegro então não acho q vá conseguir instalar outra tão facilmente rsrs.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!