Conectar-se

Esqueci minha senha

Últimos assuntos
» Novo endereço da XCreator
Qua 16 Mar 2011, 08:49 por vinians

» C++? ajuda
Qui 17 Fev 2011, 16:42 por Henrique_GJ

» dúvida em centralizar arma e player
Dom 30 Jan 2011, 17:08 por AndersonXD

» GO linguagem de programação da Google !!
Qui 27 Jan 2011, 21:04 por vinians

» [Duvida]esqueci o código pra mudar o tamanho da room
Qui 13 Jan 2011, 15:12 por mystery_boy_maker

» show_message_ext duvida
Qua 22 Dez 2010, 21:36 por mystery_boy_maker

» Testes com C & Allegro
Seg 13 Dez 2010, 14:31 por vinians

» FreeBasic - Código completo Snake
Seg 13 Dez 2010, 11:13 por tblima123

» Me apresentando...
Sab 11 Dez 2010, 22:26 por vinians

» URL Reverse
Sab 11 Dez 2010, 22:23 por vinians

Parceiros
Seja nosso parceiro, adicione nosso button em seu portal!


• • •

• • •

• • •
[parceiro 3]

Magic Trace

Ir em baixo

Magic Trace

Mensagem por Convidad em Dom 17 Out 2010, 10:14

Essa é uma pequena experiência que fiz ontem a noite enquanto conversava com o vinians sobre a microlinguagem draw do FB, assunto do próximo artigo que ele está escrevendo...



Uploaded with ImageShack.us

...pra quem não lembra ou não é da época (bom, eu tmb não sou exatamente da época mas enfim) existia um brinquedo chamado traço mágico que usava 2 eixos pra mover um ponto que riscava uma tela permitindo que fossem desenhadas formas e figuras...

...a ideia de criar algo semelhante surgiu como curisidade em uma maneira simples e prática de desenhar, já que o sistema de definição de pontos do draw é pouco intuitivo (vcs verão no artigo)... inclusive o vinians está prometendo um editor simples semelhante ao Particulum que ele criou pro Game Maker =]

Código fonte
Obs Se não conhece a microlinguagem draw do FB aguarde o artigo pra maiores explicações =]
Spoiler:

#Include "fbgfx.bi"

Windowtitle "Magic Trace"
Screenres 800, 600, 32, 2
Screenset 1,0

Dim As String trace = ""
Dim As Integer col = Rgb(255, 255, 255)
Dim As Integer x, y
x = 400
y = 300

SetMouse 400, 300, 0

Draw "S8"

While (Not Multikey(FB.SC_ESCAPE)) And (Inkey$ <> Chr(255) + "k")

Cls()

If Multikey(FB.SC_A) Then
col = Rgb(255, 255, 255)
EndIf

If Multikey(FB.SC_G) Then
col = Rgb(192, 0, 192)
EndIf

If Multikey(FB.SC_F) Then
col = Rgb(0, 0, 192)
EndIf

If Multikey(FB.SC_E) Then
col = Rgb(0, 192, 192)
EndIf

If Multikey(FB.SC_D) Then
col = Rgb(0, 192, 0)
EndIf

If Multikey(FB.SC_C) Then
col = Rgb(192, 192, 0)
EndIf

If Multikey(FB.SC_B) Then
col = Rgb(192, 0, 0)
EndIf

If Multikey(FB.SC_LEFT) And Not Multikey(FB.SC_UP) And Not Multikey(FB.SC_DOWN) Then
x -= 2
trace = trace + "L1" & "C" & col
EndIf

If Multikey(FB.SC_LEFT) And Multikey(FB.SC_UP) And Not Multikey(FB.SC_DOWN) Then
x -= 2
y -= 2
trace = trace + "H1" & "C" & col
EndIf

If Multikey(FB.SC_LEFT) And Not Multikey(FB.SC_UP) And Multikey(FB.SC_DOWN) Then
x -= 2
y += 2
trace = trace + "G1" & "C" & col
EndIf

If Multikey(FB.SC_RIGHT) And Not Multikey(FB.SC_UP) And Not Multikey(FB.SC_DOWN) Then
x += 2
trace = trace + "R1" & "C" & col
EndIf

If Multikey(FB.SC_RIGHT) And Multikey(FB.SC_UP) And Not Multikey(FB.SC_DOWN) Then
x += 2
y -= 2
trace = trace + "E1" & "C" & col
EndIf

If Multikey(FB.SC_RIGHT) And Not Multikey(FB.SC_UP) And Multikey(FB.SC_DOWN) Then
x += 2
y += 2
trace = trace + "F1" & "C" & col
EndIf

If Multikey(FB.SC_UP) And Not Multikey(FB.SC_LEFT) And Not Multikey(FB.SC_RIGHT) Then
y -= 2
trace = trace + "U1" & "C" & col
EndIf

If Multikey(FB.SC_DOWN) And Not Multikey(FB.SC_LEFT) And Not Multikey(FB.SC_RIGHT) Then
y += 2
trace = trace + "D1" & "C" & col
EndIf

If Multikey(FB.SC_DELETE) Then
x = 400
y = 300
trace = ""
EndIf

Draw trace

Line(0, y)-(800, y), Rgb(127, 127, 127), , &b01111
Line(x, 0)-(x, 600), Rgb(127, 127, 127), , &b01111
Circle(x, y), 6, col, , , , F

Line(0, 0)-(800, 32), Rgb(0, 0, 128), BF
Draw String(24, 14), "USE AS SETAS PARA DESENHAR | DELETE LIMPA A TELA", Rgb(255, 255, 255)
Line(776, 4)-(752, 28), Rgb(192, 0, 192), BF
Line(776, 4)-(752, 28), Rgb(255, 255, 255), B
Draw String(762, 14), "G", Rgb(255, 255, 255)
Line(712, 4)-(736, 28), Rgb(0, 0, 192), BF
Line(712, 4)-(736, 28), Rgb(255, 255, 255), B
Draw String(722, 14), "F", Rgb(255, 255, 255)
Line(672, 4)-(696, 28), Rgb(0, 192, 192), BF
Line(672, 4)-(696, 28), Rgb(255, 255, 255), B
Draw String(682, 14), "E", Rgb(255, 255, 255)
Line(632, 4)-(656, 28), Rgb(0, 192, 0), BF
Line(632, 4)-(656, 28), Rgb(255, 255, 255), B
Draw String(642, 14), "D", Rgb(255, 255, 255)
Line(592, 4)-(616, 28), Rgb(192, 192, 0), BF
Line(592, 4)-(616, 28), Rgb(255, 255, 255), B
Draw String(602, 14), "C", Rgb(255, 255, 255)
Line(552, 4)-(576, 28), Rgb(192, 0, 0), BF
Line(552, 4)-(576, 28), Rgb(255, 255, 255), B
Draw String(562, 14), "B", Rgb(255, 255, 255)
Line(512, 4)-(536, 28), Rgb(255, 255, 255), BF
Line(512, 4)-(536, 28), Rgb(0, 0, 0), B
Draw String(522, 14), "A", Rgb(0, 0, 0)

Screencopy
Sleep(5)

Wend

t+

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Magic Trace

Mensagem por tblima123 em Dom 17 Out 2010, 10:28

Achei da horinha, depois vou tentar entender melhor, só uma coisa:
Pra você não ter que toda vida digitar FB. antes da constante da tecla (FB.SC_UP) coloque isso no código depois da chamada da biblioteca fbgfx.bi

Código:

Using FB 'prefixo do namespace FB da biblioteca fbgfx

Com isso, todas as constantes do namespace FB serão automaticamente reconhocidas pelo sistema, você só precisará digitar SC_UP (sem o FB. mesmo).


Última edição por tblima123 em Dom 17 Out 2010, 11:26, editado 6 vez(es)
avatar
tblima123
Ocasional

Mensagens : 54
Data de inscrição : 06/11/2009

Voltar ao Topo Ir em baixo

Re: Magic Trace

Mensagem por Convidad em Dom 17 Out 2010, 10:40

Legal tblima123, valeu pela dica!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Magic Trace

Mensagem por vinians em Dom 17 Out 2010, 11:02

E ae pessoal blz?
Então, na verdade o "Using FB" ou "Using whatever" siginifica selecionar o "Namespace" de algum objeto ou conjuntos de procedimento. Um Namespace é como se fosse um caixa que encapsula todas as variáveis, constantes, funcoes e classes de um determinado escopo. É usado para que não haja conflito de nomes. Por exemplo, eu posso criar um comando Draw feito por mim sem que fique em conflito com o atual, basta criar o name space por exemplo "XCreator" e usar XCreator.Draw, ou "Using XCreator".

_________________
we love to make games!
avatar
vinians
Editor

Masculino
Mensagens : 85
Data de inscrição : 24/08/2009
Localização : Rio de Janeiro

http://www.xcreator.com.br

Voltar ao Topo Ir em baixo

Re: Magic Trace

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum