Ir ao conteúdo

Daniel Bittencourt

Membro Pleno
  • Posts

    73
  • Cadastrado em

  • Última visita

Tudo que Daniel Bittencourt postou

  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. eu uso allegro 4.2.2 ;-;
  11. @Visitante: btião testei e funcionou perfeitamente... joguei nos 3 modos na mesma execução... e funcionou 100%
  12. 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.
  13. @Flávio Pedroza mt obrigado funcionou perfeitamente!!!!!
  14. 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
  15. 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.
  16. @arfneto entendi seria aqui? bom, não sei se pode dar errado, creio que sim, mas retirei esta parte que imprime o erro e funciona: if (argc != 2) { printf("usage: %s localhost\n", argv[0]); return 1; }
  17. @arfneto ah, mas eu estou executando no dev c++, por isso essa confusão, que eu saiba, não tem linha de comando nele, kkk
  18. cara se eu não tenho a menor ideia de onde trocar, como trocarei????? só me diga ONDE em qual PARTE do programa está isso!!!!!!!!!
  19. @arfneto eu precisava saber apenas onde escrevo localhost porque eu não acho!! é no printf???acho que não pois é o unico lugar que vi isso!! eu não estou brincando eu não sei onde devo substituir
  20. @arfneto eu já pensava isso na primeira vez que tentei há um tempo atrás, mas agora não pensei nisso, mas n sei onde ponho, pode me falar? creio eu q seja por aqui int __cdecl main(int argc, char **argv) { WSADATA wsaData; SOCKET ConnectSocket = INVALID_SOCKET; struct addrinfo *result = NULL, *ptr = NULL, hints; const char *sendbuf = "this is a test"; char recvbuf[DEFAULT_BUFLEN]; int iResult; int recvbuflen = DEFAULT_BUFLEN; // Validate the parameters if (argc != 2) { printf("usage: %s server-name\n", argv[0]); return 1; } eu tenho um pouco de dificuldade em entender esses códigos de outros, sou bem melhor em criar um para satisfazer uma vontade, mas para fazer isso preciso de uma base e para entender melhor o tcp/ip planejo usar isso de base
  21. @arfneto eu não fiz nada ai, só quero uma base com esse arquivo da microsoft, não escrevi isso, foi apenas retirado de lá https://docs.microsoft.com/en-us/windows/win32/winsock/complete-server-code
  22. bom, preciso criar um programa usando o tcp/ip para deixá-lo online, para ter uma boa base usei a documentação da microsoft e... bem o programa deu isso: alguém pode me expilcar? ahh e os códigos server.cpp #undef UNICODE #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <winsock2.h> #include <ws2tcpip.h> #include <stdlib.h> #include <stdio.h> // Need to link with Ws2_32.lib #pragma comment (lib, "Ws2_32.lib") // #pragma comment (lib, "Mswsock.lib") #define DEFAULT_BUFLEN 512 #define DEFAULT_PORT "27015" int __cdecl main(void) { WSADATA wsaData; int iResult; SOCKET ListenSocket = INVALID_SOCKET; SOCKET ClientSocket = INVALID_SOCKET; struct addrinfo *result = NULL; struct addrinfo hints; int iSendResult; char recvbuf[DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; // Initialize Winsock iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != 0) { printf("WSAStartup failed with error: %d\n", iResult); return 1; } ZeroMemory(&hints, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_PASSIVE; // Resolve the server address and port iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result); if ( iResult != 0 ) { printf("getaddrinfo failed with error: %d\n", iResult); WSACleanup(); return 1; } // Create a SOCKET for connecting to server ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if (ListenSocket == INVALID_SOCKET) { printf("socket failed with error: %ld\n", WSAGetLastError()); freeaddrinfo(result); WSACleanup(); return 1; } // Setup the TCP listening socket iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen); if (iResult == SOCKET_ERROR) { printf("bind failed with error: %d\n", WSAGetLastError()); freeaddrinfo(result); closesocket(ListenSocket); WSACleanup(); return 1; } freeaddrinfo(result); iResult = listen(ListenSocket, SOMAXCONN); if (iResult == SOCKET_ERROR) { printf("listen failed with error: %d\n", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } // Accept a client socket ClientSocket = accept(ListenSocket, NULL, NULL); if (ClientSocket == INVALID_SOCKET) { printf("accept failed with error: %d\n", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } // No longer need server socket closesocket(ListenSocket); // Receive until the peer shuts down the connection do { iResult = recv(ClientSocket, recvbuf, recvbuflen, 0); if (iResult > 0) { printf("Bytes received: %d\n", iResult); // Echo the buffer back to the sender iSendResult = send( ClientSocket, recvbuf, iResult, 0 ); if (iSendResult == SOCKET_ERROR) { printf("send failed with error: %d\n", WSAGetLastError()); closesocket(ClientSocket); WSACleanup(); return 1; } printf("Bytes sent: %d\n", iSendResult); } else if (iResult == 0) printf("Connection closing...\n"); else { printf("recv failed with error: %d\n", WSAGetLastError()); closesocket(ClientSocket); WSACleanup(); return 1; } } while (iResult > 0); // shutdown the connection since we're done iResult = shutdown(ClientSocket, SD_SEND); if (iResult == SOCKET_ERROR) { printf("shutdown failed with error: %d\n", WSAGetLastError()); closesocket(ClientSocket); WSACleanup(); return 1; } // cleanup closesocket(ClientSocket); WSACleanup(); return 0; } client.cpp #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <winsock2.h> #include <ws2tcpip.h> #include <stdlib.h> #include <stdio.h> // Need to link with Ws2_32.lib, Mswsock.lib, and Advapi32.lib #pragma comment (lib, "Ws2_32.lib") #pragma comment (lib, "Mswsock.lib") #pragma comment (lib, "AdvApi32.lib") #define DEFAULT_BUFLEN 512 #define DEFAULT_PORT "27015" int __cdecl main(int argc, char **argv) { WSADATA wsaData; SOCKET ConnectSocket = INVALID_SOCKET; struct addrinfo *result = NULL, *ptr = NULL, hints; const char *sendbuf = "this is a test"; char recvbuf[DEFAULT_BUFLEN]; int iResult; int recvbuflen = DEFAULT_BUFLEN; // Validate the parameters if (argc != 2) { printf("usage: %s server-name\n", argv[0]); return 1; } // Initialize Winsock iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != 0) { printf("WSAStartup failed with error: %d\n", iResult); return 1; } ZeroMemory( &hints, sizeof(hints) ); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; // Resolve the server address and port iResult = getaddrinfo(argv[1], DEFAULT_PORT, &hints, &result); if ( iResult != 0 ) { printf("getaddrinfo failed with error: %d\n", iResult); WSACleanup(); return 1; } // Attempt to connect to an address until one succeeds for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) { // Create a SOCKET for connecting to server ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); if (ConnectSocket == INVALID_SOCKET) { printf("socket failed with error: %ld\n", WSAGetLastError()); WSACleanup(); return 1; } // Connect to server. iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen); if (iResult == SOCKET_ERROR) { closesocket(ConnectSocket); ConnectSocket = INVALID_SOCKET; continue; } break; } freeaddrinfo(result); if (ConnectSocket == INVALID_SOCKET) { printf("Unable to connect to server!\n"); WSACleanup(); return 1; } // Send an initial buffer iResult = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 ); if (iResult == SOCKET_ERROR) { printf("send failed with error: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } printf("Bytes Sent: %ld\n", iResult); // shutdown the connection since no more data will be sent iResult = shutdown(ConnectSocket, SD_SEND); if (iResult == SOCKET_ERROR) { printf("shutdown failed with error: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } // Receive until the peer closes the connection do { iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0); if ( iResult > 0 ) printf("Bytes received: %d\n", iResult); else if ( iResult == 0 ) printf("Connection closed\n"); else printf("recv failed with error: %d\n", WSAGetLastError()); } while( iResult > 0 ); // cleanup closesocket(ConnectSocket); WSACleanup(); return 0; }
  23. Gente uma dúvida: um jogo em c++ ascii pesa mais do que um jogo c++/allegro com imagens e o mesmo conteúdo?
  24. ta consegui com uma outra função: void clrscr() { COORD coordScreen = { 0, 0 }; DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsole, &csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten); GetConsoleScreenBufferInfo(hConsole, &csbi); FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten); SetConsoleCursorPosition(hConsole, coordScreen); return; }

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...