Gå til innhold

Bilder i VB som kommer enkelt opp som 1-9 og høyere


Anbefalte innlegg

Heisann. Nå om dagen holder jeg på med et enkelt tekst basert spill. Kommet fram til ditt og datt, men har et par problemer. Noe av det er at når man "angriper" noen, tar man jo en del liv. Løsning er og ha en txt box som er "strength", og når du da angriper så tar du Strength, putter det i en boks, timer som tar random noe lignende rand.next ("txtStrengthCa")-= (1,5) og det samme bare med pluss. På den måten får man tatt random damage innen for rimelige grenser basert på stats. Anyways, det ble litt tafatt, så HER kommer det virkelige problemet, (et av de)

 

Har nå sittet med Photoshop og lagd 9 bilder. Grønne fine bilder av tallene 1-9. Men jeg vil at når man tar 4 liv, skal bildet komme opp. Dette gikk greit, bare se på koden under.

 

 

 

 Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
	Dim rand As New Random()
	txtPStrengthca.Text = txtPStrength.Text
	txtPStrengthca.Text -= rand.Next(1, 2)
	txtPStrengthca.Text += rand.Next(1, 5)
	If checkBattle.Checked = True Then
		If txtTempD.Text = 1 Then

			picG1.Visible = True
		Else
			picG1.Visible = False
		End If
		If txtTempD.Text = 2 Then
			picG2.Visible = True
		Else
			picG2.Visible = False
		End If
		If txtTempD.Text = 3 Then
			picG3.Visible = True
		Else
			picG3.Visible = False
		End If
		If txtTempD.Text = 4 Then
			picG4.Visible = True
		Else
			picG4.Visible = False
		End If
		If txtTempD.Text = 5 Then
			picG5.Visible = True
		Else
			picG5.Visible = False
		End If
		If txtTempD.Text = 6 Then
			picG6.Visible = True
		Else
			picG6.Visible = False
		End If
		If txtTempD.Text = 7 Then
			picG7.Visible = True
		Else
			picG7.Visible = False
		End If
		If txtTempD.Text = 8 Then
			picG8.Visible = True
		Else
			picG8.Visible = False
		End If
		If txtTempD.Text = 9 Then
			picG9.Visible = True
		Else
			picG9.Visible = False
		End If
	End If

 

 

 

Det som er irriterende er og legge inn alle bildene, men det er helt OK. Men det som er ille, er at vis man tar 11 liv må jeg skrive unik kode for det da, alt fra 10 til gud vet? Noe jeg har i hodet er noe med if txtbox contains 1, så skal bildet komme fram, og vis contains 2, skal det bildet komme fram på den måten at det er 2-3 bilde grupper vedsiden av hverandre, noe sånn som

_____ _____

|Bilde| |Bilde|

|1 - 9| |1 - 9|

|-----| |-----|

. Noen ideer til og gjøre dette på en enklere måte en og skrive samme kode med forskjellige tall mange ganger?

 

Takk på forhånd, Tobbe

Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse

Hvordan i huleste ser den formen din ut egentlig. Skjønner egentlig ikke din tanke gang i det hele tatt. Men men.

 

Du kan legge bildene i en bestemt mappe og legge disse i en array.

Finn ut antall liv en tar. Så lage en loop som viser bildet som inneholder det sifferet.

 

Muligens en litt enklere måte å gjør dette på.

Legger disse bildene i en Array

Du må også lage ett bilde for 0 verdien da ettersom denne også kan bli representert som 1 0.

Under Sub New så blir bildene lagt inn i arrayet.

Sub Draw(inLives as Integer) vil "tegne" verdiene som er aktuelle i pictureboxen.

Håper koden er forståelig og bare spør om noe hvis det skulle være noe uklarheter her.

 

 

Public Class Form1

 

Dim images(9) As Image

Dim pictBox As PictureBox

Sub New()

InitializeComponent() 'Viktig for att formen skal virke!

 

For x As Integer = 0 To 9

images(x) = New Drawing.Bitmap("path-to-image\image-" & x & ".png")

Next

pictBox = New PictureBox

pictBox.Name = "stat_livestaken" 'gjerne ett navn som forklarer meningen med bildeboksen

pictBox.Left = 20 'hvor langt ifra venstreside av form

pictBox.Top = 100 'hvor langt ifra toppen av form

pictBox.Width = 200 'lengde

pictBox.Height = 100 'høyde

pictBox.BackColor = Me.BackColor

pictBox.Visible = False

Me.Controls.Add(pictBox)

End Sub

 

Sub Draw(ByVal inLives As Integer)

Dim grap As Drawing.Graphics

grap = Drawing.Graphics.FromImage(pictBox.Image)

grap.Clear(Me.BackColor)

For x As Integer = 0 To inLives.ToString.Length - 1

Dim relX As Integer = x * 20 'avstand fra venstre

grap.DrawImage(images(CInt(x.ToString)), New Point(relX, 0))

Next

End Sub

End Class

 

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...