Avatar billede gadebarnet Nybegynder
01. december 2003 - 12:07 Der er 1 kommentar og
1 løsning

grid hvordan?

Hvordan kan jeg lavet dette her:

Jeg vil gerne have delt et "felt" op i firkanter, så man kan rykke rundt med piletaster...

f.eks..

hver felt skal være 16*16 pixel, og så på den måde rykke rundt med min "mand" i de felter..?

er det forståeligt?

ligesom "kortet" er delt op i civilization spil, og den slags...
Avatar billede kinggenesis Nybegynder
03. december 2003 - 16:58 #1
Der her er MEGET langt fra et spil. Men håber at du kan bruge det.

' Når Form1 er loadet skal TegnKort() fyres af

    Dim GFXLib As String = Application.StartupPath & "\gfx\" ' Lib hvor du gemmer dine 16*16 BMPer

    ' Felt deminsion
    Dim TilePxSize As Integer = 16 ' = 16*16 pixel

    ' kort deminsioner
    Dim MapSizeY As Integer = 30
    Dim MapSizeX As Integer = 30

    Dim Image_A As Bitmap ' Mand bmp
    Dim Image_B As Bitmap ' Gulv bmp

    Dim gr As Graphics = Me.CreateGraphics ' Din grafiske flade til at tegne på

    Dim Pos_X As Integer = 0 ' mand X position
    Dim Pos_Y As Integer = 0 ' mand Y position

    ' LOAD
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Image_A = Bitmap.FromFile(GFXLib & "A.bmp") ' A.bmp er din mande BMP
        Image_B = Bitmap.FromFile(GFXLib & "B.bmp") ' B.bmp er dit gulv BMP
    End Sub

    ' taste tryk
    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        Select Case e.KeyValue
            Case 38 ' Nord
                Pos_Y -= TilePxSize
            Case 39 ' Øst
                Pos_X += TilePxSize
            Case 40 ' Syd
                Pos_Y += TilePxSize
            Case 37 ' Vest
                Pos_X -= TilePxSize
        End Select

        TegnKort() ' tegn kortet

    End Sub

    ' tegn kort
    Function TegnKort()
        ' tegn gulv
        Dim i As Integer
        Dim ii As Integer

        ' du vil nok tegne dit kort udfra er 2d array (eller en fil) men det gør vi ikke her :)
        ' kortet er 20 * 20 felter
        For i = 1 To MapSizeY
            For ii = 1 To MapSizeX
                gr.DrawImage(Image_B, (i * TilePxSize) - TilePxSize, (ii * TilePxSize) - TilePxSize)
            Next
        Next

        ' tegn mand oven på gulv
        gr.DrawImage(Image_A, Pos_X, Pos_Y)

    End Function
Avatar billede kinggenesis Nybegynder
03. december 2003 - 17:50 #2
Kort fra Array:

Dim KortArray(,) As Integer = { _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, _
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}

    ' tegn kort
    Function TegnKort()
        ' tegn gulv
        Dim i As Integer
        Dim ii As Integer
        ' du vil nok tegne dit kort udfra er 2d array (eller en fil) men det gør vi ikke her :)
        ' kortet er 20 * 20 felter
        For i = 0 To UBound(KortArray, 1)
            For ii = 0 To UBound(KortArray, 2)
                If KortArray(i, ii) = 1 Then
                    gr.DrawImage(Image_B, (i * TilePxSize) - TilePxSize, (ii * TilePxSize) - TilePxSize)
                End If
            Next
        Next
        ' tegn mand oven på gulv
        gr.DrawImage(Image_A, Pos_X, Pos_Y)
    End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester