Ir ao conteúdo
  • Cadastre-se

Cambalinho

Membro Pleno
  • Posts

    942
  • Cadastrado em

  • Última visita

Tudo que Cambalinho postou

  1. eis o meu actual código: void DrawRays() { int MapX =floor(PlayerPosX); int MapY=floor(PlayerPosY); while(LevelMap0[MapY][MapX]!=1) { MapX+=floor(cos(PlayerRadians)*1); MapY+=floor(sin(PlayerRadians)*1); }; DrawLine(floor(PlayerPosX),floor(PlayerPosY),floor(MapX*32),floor(MapY*32),RGB(0,255,0)); } eu somo 1 a 1 quadrado, consoante o Radiano do player, mas cada quadrado tem 32 por 32.. alguém, no Youtube, ao mostrar 1 algoritmo DDA, disse que era o mesmo... yah.. right. eu posso ter o pseu-codigo errado, mas o raciocionio está correcto?
  2. tem razão.. eu resolvi isso e muito mais.. verdade algumas classes\funções estavam repetidas e nem me tinha apercebido.... agora tenho alguns avisos que não consigo resolver: 1) hwnd = CreateWindowEx(0, classname, strCaption.c_str(),WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this); tive de usar '0' para evitar 1 aviso.. e não posso usar 'NULL'. 2) if (inst->clrBackColor==-1) 'clrBackColor' é 1 objeto de: typeredef(COLORREF color); o '-1' é transparente... se calhar deveria outro tipo de variável.
  3. como usar as opções do Linker no Code Blocks? eu tenho 1 class que usa o operador '='(overloading operators) e Lambdas. eis como compila: isto foi retirado do 'Build Log'. como vê tenho imensos erros, mas sei que é do compilador ou opções do Linker. eu criei a classe, por isso funcionou na criação, mas após reinstalar o Code Blocks, perdi tudo... ao menos tenho a classe
  4. finalmente consegui resolver, mas notei alguns erros nos links\tutorials e no youtube: 1 - a libraria é para o CodeBlocks 32 bits, o 64 dá esse erro!!!!; 2 - a libraria\headers são na pasta(baixei o CodeBlocks 32 bits com o compilador mingw 32 bits: "C:\Program Files (x86)\CodeBlocks\MinGW\i686-w64-mingw32\include" e "C:\Program Files (x86)\CodeBlocks\MinGW\i686-w64-mingw32\lib" e não na: "C:\Program Files (x86)\CodeBlocks\MinGW\lib" e não na: "C:\Program Files (x86)\CodeBlocks\MinGW\include" demorei imenso reparar nisto tudo muito obrigado por tudo amigo.
  5. qual são as suas flags nas opções do compilador?
  6. why CodeBlocks can't find the file if there on that folder?
  7. mas eu adicionei: mas acredito que não devo ter a libraria correcta... existem muitas na net, mas podem não ser compativeis com GNU
  8. eu uso o CodeBlocks para programar C\C++. queria usar o Graphics.h. eu baixei 2 ficheiros headers e a libraria... mas podem não ser os compativeis. adicionei a libraria e este comandos\opções do linker: "-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32" mas, ao compilar, obtenho 1 erro: "ld.exe||cannot find -lbgi|" porque este erro? como o corrigir? será da compatibilidade da libraria?
  9. tenho problemas no windows 98.. não consigo ler cartões de memória o ID do driver é: PCI\VEN_104C&DEV_8032&REV_00 e PCI\VEN_104C&DEV_8033&REV_00 já instalei drivers e alguns instalaram, mas quando insiro o cartão, nada acontece alguém pode me ajudar a resolver o problema?
  10. no Windows 98 eu instalei o Paragon e consigo ler pens, de 16GB's, NTFS sem problemas... mas se usar 1 disco externo com 500GB's o Explorer dá-me erro... como posso ler discos iguais ou superiores a 500GB's? qual é o patch mais indicado?
  11. eu tenho o portatil acer aspire 1690.. a BIOS é PhoenixBIOS Setup Utility. porque a pendrive não aparece na lista do Boot? eu já tentei pesquisar na net e ainda não tive sucesso
  12. nos pdf's como posso alterar de A4 para A5(para usar 2 páginas numa) e aumentar a escala? eu tenho 1 documento que tentei converter de A4 para A5 com o PDFescape Desktop, mas ficou a ocupar mais do dobro de Mega Bytes... mas em escala pequena
  13. a minha pergunta é confusa?
  14. eis a função para criar DIB's: Private Declare Function CreateDIBSection Lib "gdi32.dll" (ByVal hdc As Long, ByRef pBitmapInfo As Any, ByVal un As Long, ByRef lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long eis como uso: hBitmap = CreateDIBSection(hdc, bmpInfoHeader, BI_RGB, bmpPtr(0), 0, 0) isto funciona, mas o 'bmpPtr' não fica como ponteiro. como transformo o 'bmpPtr' em ponteiro e altero os valores? e sim o VB6 permite usar ponteiros: http://www.thevbzone.com/ em ' VB SECRETS'
  15. mas assim não posso desligar a ecra automaticamente como poupança de energia
  16. https://imgur.com/wRYVfcz https://imgur.com/QuTeGW4
  17. eis a função do RayCasting: Private Sub RayCasting() Dim StartAngle As Double Dim EndAngle As Double Dim IncrementAngle As Double Dim Distance As Double Dim RayX As Double Dim RayY As Double Dim RayAngle As Double Dim RayActualX As Double Dim RayActualY As Double Dim Wall As Integer Dim IncrementPixel As Double Dim IncrementStepSin As Double Dim IncrementStepCos As Double Dim AlturaLinha As Double Dim CorrecaoVisao As Double 'Obter a posição inicial dos Raios com a posição do jogador: RayX = PlayerX RayY = PlayerY 'o ângulo do meio tem de ser o ângulo do jogador StartAngle = PlayerAngle - DegreeToRadians(60 / 2) IncrementAngle = PlayerRotation / 10 Distance = 0 IncrementPixel = 2 Dim RayCount As Long Picture1.Cls RayAngle = StartAngle For RayCount = 0 To CamWidth / 10 Step 1 Distance = 0 AlturaLinha = 0 Wall = 0 RayActualX = PlayerX RayActualY = PlayerY IncrementStepSin = Sin(RayAngle) * IncrementPixel IncrementStepCos = Cos(RayAngle) * IncrementPixel Do While (Wall = 0) Wall = LevelMap(Floor(RayActualY / MapResolution))(Floor(RayActualX / MapResolution)) If (Wall <> 0) Then Exit Do RayActualX = RayActualX + IncrementStepCos RayActualY = RayActualY + IncrementStepSin Distance = Distance + 1 Loop AlturaLinha = Floor(CamHalfHeight / Distance * MapResolution) DrawLine Picture1, RayCount, 0, RayCount, CamHalfHeight - AlturaLinha / 2, vbCyan DrawLine Picture1, RayCount, CamHalfHeight - AlturaLinha / 2, RayCount, CamHalfHeight + AlturaLinha / 2, colors(Wall) DrawLine Picture1, RayCount, CamHalfHeight + AlturaLinha / 2, RayCount, CamHeight, vbMagenta Me.Line (RayX, RayY)-(RayActualX, RayActualY), vbCyan RayAngle = RayAngle + IncrementAngle If (RayCount = CamWidth) Then Exit For Next RayCount End Sub não tenho controlo entre velocidade e tamanho da tela... a fica fica super pequena... mas não entendi como posso alterar o tamanho da tela.... só se repetir a 2ª 'Drawline" para dupla linha vertical
  18. tenho 1 erro ou bug no meu Windows 10: quando fecho a tampa do portatil.. e depois(após alguns minutos) volto abrir.... o ecra fica preto. clico no rato e no teclado... mas o ecra se mantem preto... a unica forma é desligar o portatil e depois voltar a ligar. como posso corrigir este bug?
  19. mesmo assim ainda dá erro de overloading... então, parece instavel, meti o 'on error resume next'... não é correto, mas ajuda e muito
  20. imagine que temos 1 array de 8X8 de quadrados e cada quadrado tem 64 de tamanho e quer 2 pixels de espaço entre eles. agora como posso desenhar esses quadrados com espaço? Private Sub DrawMap() Dim X As Integer Dim Y As Integer Dim X0 As Integer Dim Y0 As Integer Dim Spaces As Integer 'MapResolution=64 'LevelMapHeight and LevelMapWidth are 8 Spaces = 5 For Y = 0 To LevelMapHeight - 1 For X = 0 To LevelMapWidth - 1 X0 = X * MapResolution Y0 = Y * MapResolution 'Line Method: 'Line(X0,Y0) - (X1,Y2), côr 'Square Method: 'Line(X0,Y0) - (X1,Y2), côr, BF 'X0 e Y0 é o ponto superior esquerdo e X1, Y1 é ponto inferior direito If (LevelMap(Y)(X) = 0) Then Me.Line (X0 + Spaces, Y0 + Spaces - 1)-(X0 + MapResolution - Spaces, Y0 + MapResolution - Spaces - 1), vbBlack, BF Else Me.Line (X0 + Spaces, Y0 + Spaces - 1)-(X0 + MapResolution - Spaces, Y0 + MapResolution - Spaces - 1), vbWhite, BF End If Next X Next Y o meu problema é não ter o mesmo espaço entre os quadrados e vejo isso na altura :( como posso resolver esse bug?
  21. muito obrigado por tudo e entendi sim. é pena o VB6 ter algumas limitações de funções de Matemática e operadores bits ;)
  22. @Diego voltei a pensar e só alterei do 'Integer' para 'Long' e já não dá o erro. no VB6 é melhor usarmos o 'Long' em vez do 'Integer'?
  23. vendo bem eu posso ter 1 erro da calculos para fazer o RayCasting :( Private Sub RayCasting() Dim r As Integer Dim mx As Integer Dim my As Integer Dim mp As Integer Dim mapx As Double Dim mapy As Double Dim dof As Integer Dim rx As Double Dim ry As Double Dim ra As Double Dim x0 As Double Dim y0 As Double ra = PlayerAngle For r = 0 To 10 'Debug.Print "raycsting" 'check Horizontal Lines: dof = 0 Dim atan As Double If (Tan(ra) > 0) Then atan = -1 / Tan(ra) Else atan = -1 End If If (ra > PI) Then ry = (CInt(ShiftLeft(ShiftRight(PlayerY, 6), 6) - 0.0001)) rx = (PlayerY - ry) * atan + PlayerX y0 = -64 x0 = -y0 * atan End If If (ra < PI) Then ry = (CLng(ShiftLeft(ShiftRight(PlayerY, 6), 6) + 64)) rx = (PlayerY - ry) * atan + PlayerX y0 = 64 x0 = -y0 * atan End If If (ra = 0 Or ra = PI) Then rx = PlayerX ry = PlayerY dof = 8 End If While (dof < 8) mx = Cnt(ShiftLeft(rx, 6)) 'overflow error my = CLng(ShiftLeft(ry, 6)) mp = mx * mapx + mx If (LevelMap(mapy)(mapx) = 1) Then dof = 8 Else rx = rx + x0 ry = ry + y0 dof = dof + 1 End If Me.Line (PlayerX, PlayerY)-(rx, ry), vbRed Wend Next r End Sub
  24. como evitar o overflow no Visual Basic 6? Function ShiftRight(ByVal lngNumber As Long, ByVal intNumBits As Integer) As Long '-------------- 'BIT SHIFT RIGHT >> '-------------- ShiftRight = lngNumber \ 2 ^ intNumBits 'note the integer division op End Function Function ShiftLeft(ByVal lngNumber As Long, ByVal intNumBits As Integer) As Long '-------------- 'BIT SHIFT LEFT << '-------------- ShiftLeft = lngNumber * 2 ^ intNumBits End Function '............ Dim mx As Integer mx = Cnt(ShiftLeft(rx, 6)) 'overflow error o 'mx' dá me o erro de overflow runtime error '6'. como posso evitar esse erro?

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!