-
Posts
942 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Cambalinho postou
-
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?
-
C++ Code Blokcs: como usar as opções do Linker?
Cambalinho respondeu ao tópico de Cambalinho em C/C#/C++
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. -
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
-
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.
-
qual são as suas flags nas opções do compilador?
-
why CodeBlocks can't find the file if there on that folder?
-
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
-
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?
-
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?
-
Windows 9X: como reconhecer discos superiores a 500GB's?
Cambalinho postou um tópico em Versões até Windows 8
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? -
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
-
Visual Basic Como se usa ponteiros em VB6?
Cambalinho respondeu ao tópico de Cambalinho em Programação - outros
a minha pergunta é confusa? -
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'
-
como ligar o portatil após fechar a tampa?
Cambalinho respondeu ao tópico de Cambalinho em Windows 10
não resolveu :( -
como ligar o portatil após fechar a tampa?
Cambalinho respondeu ao tópico de Cambalinho em Windows 10
mas assim não posso desligar a ecra automaticamente como poupança de energia -
como ligar o portatil após fechar a tampa?
Cambalinho respondeu ao tópico de Cambalinho em Windows 10
https://imgur.com/wRYVfcz https://imgur.com/QuTeGW4 -
Visual Basic VB6 como aumentar velocidade e tela no Raycasting?
Cambalinho postou um tópico em Programação - outros
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 -
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?
-
Visual Basic Visual Basic 6: Como evitar o overflow?
Cambalinho respondeu ao tópico de Cambalinho em Programação - outros
mesmo assim ainda dá erro de overloading... então, parece instavel, meti o 'on error resume next'... não é correto, mas ajuda e muito -
Visual Basic Visual Basic 6: como desenhar vários quadrados deixando 1 espaço entre eles?
Cambalinho postou um tópico em Programação - outros
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? -
Visual Basic Visual Basic 6: Como evitar o overflow?
Cambalinho respondeu ao tópico de Cambalinho em Programação - outros
muito obrigado por tudo e entendi sim. é pena o VB6 ter algumas limitações de funções de Matemática e operadores bits ;) -
Visual Basic Visual Basic 6: Como evitar o overflow?
Cambalinho respondeu ao tópico de Cambalinho em Programação - outros
@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'? -
Visual Basic Visual Basic 6: Como evitar o overflow?
Cambalinho respondeu ao tópico de Cambalinho em Programação - outros
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 -
Visual Basic Visual Basic 6: Como evitar o overflow?
Cambalinho postou um tópico em Programação - outros
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