Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sipmann

[Resolvido] Ler arquivo, jogar numa array, gerar mapa

Recommended Posts

bom... to eu enxendo o saco de vcs denovo com duvidas bestas mas q eu n sei =]

 

ta seguinte entao... um jogo... 2d com mapa em tiles!!! entao digamos q eu criei um arquivo .map com o codigo dos tiles

ex:

Arquivo = "C:/mapa.map"
ARQ = FreeFile
OPEN Arquivo For Random as #ARQ

WRITE # 1, 1, 1, 1
WRITE # 1, 2, 2, 1
WRITE # 1, 2, 2, 1
WRITE # 1, 1, 1, 1
ta... ta criado um mapa

 

dai entao pra para gerar o mapa... como eu faria... eu sei fazer isto em delphi... mas como eu prefiro VB =] (so teimoso)

como q faria entao?? eu sei q seria com um loop e tals pra pega o x e o y. bom eu tenho uma ideia minima de como se fazer mas bemmmm minima! se puderem me ajudar!

 

no delphi eu pegara ja uma array eu fazia ela mesmo tmb n sabia como pegar de volta as linhas e organizalas (pega eu sei INPUT #) e entao eu fazia um loop e só trocava pelas imagens! se é q me entenderam... bom dava pra me dar uma luz? pq eu n faço a menor ideia como em VB eu creio q para isso usar uma pictureBox e dentro dessa gerar.... plz dava pra me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi que você quer fazer um jogo :) .

 

Você quer pegar a linha do arquivo .map e jogar em um array?

use a função Split()

array()=split("l.i.n.h.a",".")
ele vai voltar um array de linha

 

o que que você consegue fazer em delphi é que eu não entendi.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh o jogo ta saindo =] soh estou com algumas duvidas q vo tirando de poco em poco e ou descubro sosinho (gambiarra ^^ )

 

n eh exatamente isso

eh como eu disse vai te o .map e nele vai ta escrito assim

 

1, 1, 1, 1

1, 2, 2, 1

1, 2, 2, 1

1, 1, 1, 1

 

e dai disso no delphi eu faço o seguinte

 

map: array[0..5, 0..4] of integer = ( (2, 2, 2, 2, 2),

(2, 1, 1, 1, 2),

(2, 1, 0, 1, 2),

(2, 1, 0, 1, 2),

(2, 1, 1, 1, 2),

(2, 2, 2, 2, 2));

 

oh o mapa ali denovo

 

dai eu faço um for onde eu transformo cada um dos numeros em uma imagem por exemplo todos os 2 são img da agua os 1 de grama e os 0 de floresta... assim pra faze um mapa... no delphi eu sei faze mas ai ta... no vb eu n saberia como fazer =[

 

eh isso q eu sei faze em delphi

ta ai o codigo da do delphi

 

 

 

var 
x: integer; 
y: integer; 
begin 
for x := 0 to 5 do begin 
  for y := 0 to 4 do begin 
	case arr[x, y] of 
	  0: PaintBox1.Canvas.CopyRect(Rect(x*60, y*60, (x*60)+59, (y*60)+59), 
TreeImg.Canvas, Rect(0, 0, 59, 59)); 
	  1: PaintBox1.Canvas.CopyRect(Rect(x*60, y*60, (x*60)+59, (y*60)+59), 
GrassImg.Canvas, Rect(0, 0, 59, 59)); 
	  2: PaintBox1.Canvas.CopyRect(Rect(x*60, y*60, (x*60)+59, (y*60)+59), 
WaterImg.Canvas, Rect(0, 0, 59, 59)); 
	end; 
  end; 
end;

isso ai numa procedure!!! vlwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim x(1 To 10, 1 To 10) As Integer

Cria uma matriz, igual ao que você fez em Delphi.

Só que pra preencher essa matriz acho que não seja possivel do mesmo jeito em delphi.

 

PaintBox1.Canvas.CopyRect(Rect(x*60, y*60, (x*60)+59, (y*60)+59),TreeImg.Canvas, Rect(0, 0, 59, 59));

Pra você pintar que nem no Delphi, acho que você pode usar o método PaintPicture do PictureBox.

Sub PaintPicture(Picture As IPictureDisp, X1 As Single, Y1 As Single, [Width1], [Height1], [X2], [Y2], [Width2], [Height2], [Opcode])

Daki pra frente você faria que nem no Delphi.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw vo tenta

 

e obrigado... soh n ta respondida a parte da matriz... como eu poderia botar o conteudo do arquivo.map dentro da matriz!

mas ta vlw

 

 

EDIT:

bom.. tentei monta o q você falo mas... to com um problema em monta a array do map... =[

da uma luz ae pq tipo no delphi eu monto como mostri

 

map( (1, 1,1,1) .... e por ai vai mas no vb eu n concigo =\ eu so uma naba mesmo e vlw por tudo

 

fiz isso aqui no meu code

 

Dim map(1 To 6, 1 To 6) As Integer

 

Private Sub box_Paint()

Dim x As Integer

Dim y As Integer

 

 

For x = 1 To 6

For y = 1 To 6

Select Case map(x, y)

Case 1

box.PaintPicture(floresta, x * 900, y * 900, (x * 900) + 900, (y * 900) + 900) = floresta.Picture

 

End Select

Next

Next

 

End Sub

 

 

ta faltando a array do mapa tmb ele da expected function or varaible e seleciona do . em diante no box.... desculpa todas essas perguntas noob eh q comessei a BEEEM poco tempo! noção tenho mas ainda n entendo algumas coisas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você le o arquivo por linhas né?

 

Faça assim

 

For i=1 to TOTAL_DE_LINHAS
  'Ler linha aqui
  For j=1 to Len(linha)
	x(j,i)=Mid(linha,j,1)
  Next
Next

Função Mid(string,posição,tamanho)
X = Mid("QUEIJO",1,1)
'X recebe "Q"

X = Mid("QUEIJO",2,3)
'X recebe "UEI"

Quanto a função

box.PaintPicture(floresta, x * 900, y * 900, (x * 900) + 900, (y * 900) + 900) = floresta.Picture

Tente utiliza-lá sem os '(' e ')'

box.PaintPicture floresta, x * 900, y * 900, (x * 900) + 900, (y * 900) + 900

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

rodo =]

 

vlw pode por resolvido vlw mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.