Spooferproof
New member
- Joined
- May 16, 2012
- Messages
- 2
- Programming Experience
- 1-3
Hey everybody! I'm new here as ive found some other of my questions answered through google search (such a pro searcher) Anyways I'm writing a Asteroids game in VB as a final project. I need some help with logic or how i can do some stuff.
As of right now, I have a ship that can move directions and can move forward and backwards from those directions. This is done with a single PictureBox that changes the image on keypress(A for west, D for East, W for North, X for South and the others inbetween) and then whenever the "Up" key is pressed, it checked the tag on the imagebox and moves accordingly (same with down and backtrack).
My next task at hand is lasers. I originally had the same idea to have a single picture box that changes images and direction according to the Ship's direction. And upon my thinking, i came to the conclusion that this won't work as each time I press the space bar (what ill use to shoot) it will simply revert the picture box to the ship and resend the laser.
How can I make an old laser stay on screen while i shoot a new one? I had the idea of simply making multiple picture boxes, say 10, and call it "ammunition" but how can i "Roll" through ammuniction with a single keystroke? Like on multiple presses of "spacebar" it goes to the next ammunition, and eventually checkes if I have any left. or reloading ammunition? I have many ideas but i simpley don't know the logic behind the code.
Thanks for your help guys, If you want i can keep this updated to show my progress over the next two weeks ill be working on this
Here is the Code so far
-Disclaimer- I'm new to VB and i'm sure this is very inefficiently done, try to work with me plz =D
*******If someone can tell me how to make a spoiler i will edit*********
As of right now, I have a ship that can move directions and can move forward and backwards from those directions. This is done with a single PictureBox that changes the image on keypress(A for west, D for East, W for North, X for South and the others inbetween) and then whenever the "Up" key is pressed, it checked the tag on the imagebox and moves accordingly (same with down and backtrack).
My next task at hand is lasers. I originally had the same idea to have a single picture box that changes images and direction according to the Ship's direction. And upon my thinking, i came to the conclusion that this won't work as each time I press the space bar (what ill use to shoot) it will simply revert the picture box to the ship and resend the laser.
How can I make an old laser stay on screen while i shoot a new one? I had the idea of simply making multiple picture boxes, say 10, and call it "ammunition" but how can i "Roll" through ammuniction with a single keystroke? Like on multiple presses of "spacebar" it goes to the next ammunition, and eventually checkes if I have any left. or reloading ammunition? I have many ideas but i simpley don't know the logic behind the code.
Thanks for your help guys, If you want i can keep this updated to show my progress over the next two weeks ill be working on this
Here is the Code so far
-Disclaimer- I'm new to VB and i'm sure this is very inefficiently done, try to work with me plz =D
*******If someone can tell me how to make a spoiler i will edit*********
Public Class Form1 Dim AsteroidSize As Integer Dim AsteroidX(10) As Integer Dim AsteroidY(10) As Integer Dim ShipSize As Integer Dim ShipX As Integer Dim ShipY As Integer Dim laserX As Integer Dim laserY As Integer Dim MyGraphics As Graphics Dim MyRandom As New Random Dim BlankBrush As Brush Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing MyGraphics.Dispose() BlankBrush.Dispose() End Sub Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 'Erase Ship at old location MyGraphics.FillRectangle(BlankBrush, ShipX, ShipY, ShipSize, ShipSize) 'Check for up key If e.KeyCode = Keys.Up Then 'Checks which direction for momvement If picShip.Tag = "North" Then ShipY = ShipY - 7 ElseIf picShip.Tag = "NorthEast" Then ShipY = ShipY - 7 ShipX = ShipX + 7 ElseIf picShip.Tag = "East" Then ShipX = ShipX + 7 ElseIf picShip.Tag = "SouthEast" Then ShipX = ShipX + 7 ShipY = ShipY + 7 ElseIf picShip.Tag = "South" Then ShipY = ShipY + 7 ElseIf picShip.Tag = "SouthWest" Then ShipY = ShipY + 7 ShipX = ShipX - 7 ElseIf picShip.Tag = "West" Then ShipX = ShipX - 7 ElseIf picShip.Tag = "NorthWest" Then ShipX = ShipX - 7 ShipY = ShipY - 7 End If 'Check for down key ElseIf e.KeyCode = Keys.Down Then If picShip.Tag = "North" Then ShipY = ShipY + 3 ElseIf picShip.Tag = "NorthEast" Then ShipY = ShipY + 3 ShipX = ShipX - 3 ElseIf picShip.Tag = "East" Then ShipX = ShipX - 3 ElseIf picShip.Tag = "SouthEast" Then ShipX = ShipX - 3 ShipY = ShipY - 3 ElseIf picShip.Tag = "South" Then ShipY = ShipY - 3 ElseIf picShip.Tag = "SouthWest" Then ShipY = ShipY - 3 ShipX = ShipX + 3 ElseIf picShip.Tag = "West" Then ShipX = ShipX + 3 ElseIf picShip.Tag = "NorthWest" Then ShipX = ShipX + 3 ShipY = ShipY + 3 End If 'Changes directions ElseIf e.KeyCode = Keys.E Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipNorthEast picShip.Tag = "NorthEast" ElseIf e.KeyCode = Keys.D Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipEast picShip.Tag = "East" ElseIf e.KeyCode = Keys.C Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipSouthEast_copy picShip.Tag = "SouthEast" ElseIf e.KeyCode = Keys.X Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipSouth picShip.Tag = "South" ElseIf e.KeyCode = Keys.Z Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipSouthWest picShip.Tag = "SouthWest" ElseIf e.KeyCode = Keys.A Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipWest picShip.Tag = "West" ElseIf e.KeyCode = Keys.Q Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipNorthWest picShip.Tag = "NorthWest" ElseIf e.KeyCode = Keys.W Then picShip.Image = WindowsApplication1.My.Resources.Resources.ShipNorth picShip.Tag = "North" 'Shoot laser. 1st check direction of ship, then shoot laser ElseIf e.KeyCode = Keys.Space Then If picShip.Tag = "North" Or picShip.Tag = "South" Then picLaser.Image = WindowsApplication1.My.Resources.Resources.laserNorth ElseIf picShip.Tag = "NorthEast" Or picShip.Tag = "SouthWest" Then picLaser.Image = WindowsApplication1.My.Resources.Resources.laserNorthEast ElseIf picShip.Tag = "East" Or picShip.Tag = "West" Then picLaser.Image = WindowsApplication1.My.Resources.Resources.laserEast ElseIf picShip.Tag = "NorthWest" Or picShip.Tag = "SouthEast" Then picLaser.Image = WindowsApplication1.My.Resources.Resources.laserSouthEast End If End If 'position ship MyGraphics.DrawImage(picShip.Image, ShipX, ShipY, ShipSize, ShipSize) End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim X As Integer Dim I As Integer Dim Y As Integer 'Asteroids spread across the panel with 20 pixels borders AsteroidSize = Int((pnlAsteroids.Width - 6 * 20) / 5) X = 10 For I = 1 To 10 AsteroidX(I) = X X = X + AsteroidSize + 20 Next Y = 10 For I = 1 To 10 AsteroidY(I) = Y Y = Y + AsteroidSize + 20 Next ShipSize = Int(AsteroidSize / 2) MyGraphics = pnlAsteroids.CreateGraphics BlankBrush = New SolidBrush(pnlAsteroids.BackColor) 'Give form focus Me.Focus() End Sub End Class
Last edited by a moderator: