
-----------------------------------
SaintK
Wed Jan 13, 2010 8:35 am

Final part on my game to bring it together
-----------------------------------
Okey im nearly done, a few days til this is due but I am close to finish anyway, to get it all done I require my character (who can rotate) to be able to shoot from his pistol in whatever position he may be so would it be either tied to trig of the character or by itself? Thx for the help in advance. ;D

-----------------------------------
Ktomislav
Wed Jan 13, 2010 12:59 pm

Re: Final part on my game to bring it together
-----------------------------------
Post your code..

-----------------------------------
TerranceN
Wed Jan 13, 2010 3:45 pm

RE:Final part on my game to bring it together
-----------------------------------
The bullet's angle would be independent of the character's angle, but the bullet's angle would be set to the value of the character's angle at the moment the bullet is fired.

I think thats what you're asking, if not, provide more details or post your code.

-----------------------------------
SaintK
Thu Jan 14, 2010 9:06 am

Re: Final part on my game to bring it together
-----------------------------------
okey here it is

setscreen ("graphics:max;max,nocursor,nobuttonbar")
View.Set ("offscreenonly")
var temp : string (1)
var mouseX, mouseY, button, charX, charY, character, oldCharacter, reticle : int
var angle, dx, dy : real
var key : array char of boolean
charX := 300
charY := 300
loop
    Mouse.Where (mouseX, mouseY, button)
    character := Pic.FileNew ("shooter.bmp")
    reticle := Pic.FileNew ("reticle.bmp")
    charX := charX
    charY := charY
    dx := mouseX - charX
    dy := mouseY - charY
    const centX := Pic.Width (character) div 2
    const centY := Pic.Height (character) div 2


    % Movement of the character
    Input.KeyDown (key)
    Pic.Draw (character, charX, charY, picMerge)
    if key (KEY_UP_ARROW) then
        charY := charY + 5
        Pic.Draw (character, charX, charY, picMerge)
    end if
    if key (KEY_RIGHT_ARROW) then
        charX := charX + 5
        Pic.Draw (character, charX, charY, picMerge)
    end if
    if key (KEY_LEFT_ARROW) then
        charX := charX - 5
        Pic.Draw (character, charX, charY, picMerge)
    end if
    if key (KEY_DOWN_ARROW) then
        charY := charY - 5
        Pic.Draw (character, charX, charY, picMerge)
    end if


    % Rotation of the character
    if dx = 0 and dy > 0 then
        oldCharacter := character
        character := Pic.Rotate (character, 90, centX, centY)
        cls
        Pic.Draw (character, charX, charY, picMerge)
        Pic.Free (oldCharacter)
        Pic.Draw (reticle, mouseX, mouseY, picMerge)
    elsif dx = 0 and dy < 0 then
        oldCharacter := character
        character := Pic.Rotate (character, 270, centX, centY)
        cls
        Pic.Draw (character, charX, charY, picMerge)
        Pic.Free (oldCharacter)
        Pic.Draw (reticle, mouseX, mouseY, picMerge)
    else
        angle := arctand (dy / dx)
        if dx > 0 and dy > 0 then % top right
            oldCharacter := character
            character := Pic.Rotate (character, round (angle), centX, centY)
            cls
            Pic.Draw (character, charX, charY, picMerge)
            Pic.Free (oldCharacter)
            Pic.Draw (reticle, mouseX, mouseY, picMerge)
        elsif dx < 0 and dy > 0 then % top left
            oldCharacter := character
            character := Pic.Rotate (character, round (angle) + 180, centX, centY)
            cls
            Pic.Draw (character, charX, charY, picMerge)
            Pic.Free (oldCharacter)
            Pic.Draw (reticle, mouseX, mouseY, picMerge)
        elsif dx < 0 and dy < 0 then % bottom left
            oldCharacter := character
            character := Pic.Rotate (character, round (angle) + 180, centX, centY)
            cls
            Pic.Draw (character, charX, charY, picMerge)
            Pic.Free (oldCharacter)
            Pic.Draw (reticle, mouseX, mouseY, picMerge)
        elsif dx > 0 and dy < 0 then % bottom right
            oldCharacter := character
            character := Pic.Rotate (character, round (angle), centX, centY)
            cls
            Pic.Draw (character, charX, charY, picMerge)
            Pic.Free (oldCharacter)
            Pic.Draw (reticle, mouseX, mouseY, picMerge)
        end if
    end if
    View.Update
    cls
end loop

-----------------------------------
SaintK
Thu Jan 14, 2010 9:14 am

Re: Final part on my game to bring it together
-----------------------------------
here are the images if needed

-----------------------------------
Ktomislav
Thu Jan 14, 2010 11:43 am

Re: Final part on my game to bring it together
-----------------------------------
Why did you put this in a loop? By doing so you will get an error pretty soon.
character := Pic.FileNew ("shooter.bmp")
reticle := Pic.FileNew ("reticle.bmp")

That what you are doing with oldCraracter is uselss. oldCharacter contains the original shooter.bmp picture all the time. Wouldn't it be easier if you defined it as a constanat or declare it outside of the main loop and not change it?

-----------------------------------
Turing_Gamer
Thu Jan 14, 2010 11:46 am

Re: Final part on my game to bring it together
-----------------------------------
You have to do a bit of trig, Math.Distance, and arrays.
The first two I don't know how to do
