Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Movement and shooting
Index -> Programming, Turing -> Turing Help
Goto page 1, 2, 3  Next
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
chaos




PostPosted: Fri Dec 17, 2010 9:12 pm   Post subject: Movement and shooting

I need some help.

I'm creating a game cinsisting of shooting people using text graphics.
But, the problem is that whenever the bullet is shot, the player is frozen, until the bullet stops or leaves the screen.
How can I move the player while the bullet is moving?
Sponsor
Sponsor
Sponsor
sponsor
TokenHerbz




PostPosted: Fri Dec 17, 2010 9:28 pm   Post subject: RE:Movement and shooting

take the bullet out of its own loop and put it inside a fnc or proc to run the same time as the person.
Insectoid




PostPosted: Fri Dec 17, 2010 10:00 pm   Post subject: RE:Movement and shooting

This is a common question and as such has many, many solutions (almost all of which are the same) posted around the Turing board.
chaos




PostPosted: Fri Dec 17, 2010 11:15 pm   Post subject: Re: Movement and shooting

@tokenherbz
Are you saying that i should put the buullets in a separate loop
Please clarify.
TokenHerbz




PostPosted: Sat Dec 18, 2010 12:08 am   Post subject: RE:Movement and shooting

No, I'm saying you need to take it out of its own loop, is what i think the problem is. however, i could be of more assistance with code.
TheGuardian001




PostPosted: Sat Dec 18, 2010 12:52 am   Post subject: Re: Movement and shooting

If you put the bullet in its own loop, nothing outside of that loop will run until the bullet is done. IE,
WRONG:
code:

loop
    if (player moving)
        move player
    end if
    if (bullet shot)
        loop %we don't leave this till the bullet is done. Everything else stops.
            move bullet
            draw bullet
        end loop
    end if
   draw player
end loop

The player moves, then the bullet moves, then the bullet moves, then the bullet moves, etc. The loop prevents the (player moving) statement from being run.

RIGHT:
code:

%Main loop. Contains EVERYTHING that needs to be repeated (NO LOOPS INSIDE THIS ONE!)
loop
    if (player moving)
        move player ONCE
    end if
    if (bullet moving)
        move bullet ONCE
    end if

    draw player
    draw bullet

    update screen
end loop.

The player moves, then the bullet moves, then the player moves, then the bullet moves, etc. They take turns, instead of blocking each other.
chaos




PostPosted: Thu Dec 23, 2010 5:28 pm   Post subject: Re: Movement and shooting

So would it be something like this? :

var y1 : int := 10
var x1 : int := 10
var y2 : int := 20
var x2 : int := 20
var count : int := 1
var chars : array char of boolean

loop
Input.KeyDown (chars)

if chars (KEY_UP_ARROW) then
y1 := y1 - 1
if y1 < 1 then
y1 := 1
end if
end if
if chars (KEY_RIGHT_ARROW) then
x1 := x1 + 1
if x1 > 80 then
x1 := 80
end if
end if
if chars (KEY_LEFT_ARROW) then
x1 := x1 - 1
if x1 < 1 then
x1 := 1
end if
end if
if chars (KEY_DOWN_ARROW) then
y1 := y1 + 1
if y1 > 24 then
y1 := 24
end if
end if
if chars (' ') and chars (KEY_RIGHT_ARROW) then
count:=1
for limitx : 1 .. 80-x1
count := count + 1
if x1+count>80 then
count:=1
end if
locate (y1, x1 + count)
put "." ..
delay(50)
cls
end for
end if
locate (y1, x1)
put "A" ..
delay(50)
cls

end loop
Insectoid




PostPosted: Thu Dec 23, 2010 5:45 pm   Post subject: RE:Movement and shooting

You have 2 delays in there. That's bad. Also, I don't know why you have a for loop. Try using code tags to format your code so I can be bothered to actually read it instead of just skimming over it.
Sponsor
Sponsor
Sponsor
sponsor
chaos




PostPosted: Thu Dec 23, 2010 7:15 pm   Post subject: Re: Movement and shooting

Hers's the code with tags:

%VARIABLE DECLARATION
var y1 : int := 10
var x1 : int := 10
var y2 : int := 20
var x2 : int := 20
var count : int := 1
var chars : array char of boolean

loop
Input.KeyDown (chars)

%CONTROLS FOR MOVEMENT
if chars (KEY_UP_ARROW) then %MOVING UP
y1 := y1 - 1
if y1 < 1 then %BORDER PARAMETERS FOR MOVING UP
y1 := 1
end if
end if

if chars (KEY_RIGHT_ARROW) then %MOVING RIGHT
x1 := x1 + 1
if x1 > 80 then %BORDER PARAMETERS FOR MOVING RIGHT
x1 := 80
end if
end if

if chars (KEY_LEFT_ARROW) then %MOVING LEFT
x1 := x1 - 1
if x1 < 1 then %BORDER PARAMETERS FOR MOVING LEFT
x1 := 1
end if
end if

if chars (KEY_DOWN_ARROW) then %MOVING DOWN
y1 := y1 + 1
if y1 > 24 then %BORDER PARAMETERS FOR MOVING DOWN
y1 := 24
end if
end if

if chars (' ') and chars (KEY_RIGHT_ARROW) then %PLAYER SHOOTING
count:=1
for limitx : 1 .. 80-x1 %FOR LOOP IS USED TO MOVE BULLET ENTIRELY WHEN CONTROL IS PRESSED ONCE
count := count + 1
if x1+count>80 then %BORDER PARAMETERS FOR BULLET
count:=1
end if
locate (y1, x1 + count) %LOCATE BULLET
put "." .. %OUTPUT BULLET
delay(50)
cls
end for
end if
locate (y1, x1) %LOCATE PLAYER
put "A" .. %OUTPUT PLAYER
delay(50)
cls

end loop
Insectoid




PostPosted: Thu Dec 23, 2010 7:58 pm   Post subject: RE:Movement and shooting

I think you're confusing comments with tags. Syntax tags highlight your code and preserve formatting. example:

code:
[syntax="turing"]
*code here*
[/syntax]


If you do this, you get code like this
Turing:

put "This is highlighted!"
loop
    put "This is indented! OMG!"
end loop
ProgrammingFun




PostPosted: Thu Dec 23, 2010 8:18 pm   Post subject: RE:Movement and shooting

You could always do it for the person:
Turing:

%VARIABLE DECLARATION
var y1 : int := 10
var x1 : int := 10
var y2 : int := 20
var x2 : int := 20
var count : int := 1
var chars : array char of boolean

loop
    Input.KeyDown (chars)

    %CONTROLS FOR MOVEMENT
    if chars (KEY_UP_ARROW) then %MOVING UP
        y1 := y1 - 1
        if y1 < 1 then %BORDER PARAMETERS FOR MOVING UP
            y1 := 1
        end if
    end if

    if chars (KEY_RIGHT_ARROW) then %MOVING RIGHT
        x1 := x1 + 1
        if x1 > 80 then %BORDER PARAMETERS FOR MOVING RIGHT
            x1 := 80
        end if
    end if

    if chars (KEY_LEFT_ARROW) then %MOVING LEFT
        x1 := x1 - 1
        if x1 < 1 then %BORDER PARAMETERS FOR MOVING LEFT
            x1 := 1
        end if
    end if

    if chars (KEY_DOWN_ARROW) then %MOVING DOWN
        y1 := y1 + 1
        if y1 > 24 then %BORDER PARAMETERS FOR MOVING DOWN
            y1 := 24
        end if
    end if

    if chars (' ') and chars (KEY_RIGHT_ARROW) then %PLAYER SHOOTING
        count := 1
        for limitx : 1 .. 80 - x1 %FOR LOOP IS USED TO MOVE BULLET ENTIRELY WHEN CONTROL IS PRESSED ONCE
            count := count + 1
            if x1 + count > 80 then %BORDER PARAMETERS FOR BULLET
                count := 1
            end if
            locate (y1, x1 + count) %LOCATE BULLET
            put "." .. %OUTPUT BULLET
            delay (50)
            cls
        end for
    end if
    locate (y1, x1) %LOCATE PLAYER
    put "A" .. %OUTPUT PLAYER
    delay (50)
    cls

end loop

But Insectoid does have a point...from now on, please try to use the syntax tags so that your code is easier to comprehend for those who might want to help you out...
chaos




PostPosted: Thu Dec 23, 2010 9:05 pm   Post subject: Re: Movement and shooting

so based on the code i gave, how would i go about moving the player and the bullet at the same time?
TokenHerbz




PostPosted: Thu Dec 23, 2010 9:49 pm   Post subject: RE:Movement and shooting

your for loop which moves the bullet is wrong.

what you are doing is, "DO ALL OF THIS LOOP NOW BEFORE WE GO BACK TO MAIN LOOP"

what you want to do, is move the BULLET WHILE going back to the main loop.

you want to use the for loop to just move it by a vector at a time then if statement to check to see if its passed boundries and time to remove it from the program.
chaos




PostPosted: Thu Dec 23, 2010 10:36 pm   Post subject: Re: Movement and shooting

could u show me what u mean using code please?
SS1389




PostPosted: Thu Dec 23, 2010 10:51 pm   Post subject: Re: Movement and shooting

BooHoo
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 3  [ 33 Posts ]
Goto page 1, 2, 3  Next
Jump to:   


Style:  
Search: