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

Username:   Password: 
 RegisterRegister   
 How do I control 2 lines at same time?
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
Rinaldi363




PostPosted: Sat Sep 24, 2005 10:56 am   Post subject: How do I control 2 lines at same time?

I got a code so I can get two lines. But they wont move at the same time. Can anyone help me out?

code:
var ex : int
var x, y, ex2 : int
var x2, y2, ex3 : int
x := 480
y := 200
x2 := 160
y2 := 200
var chars : array char of boolean
ex := 0
colorback (black)
color (white)
cls
put "To start playing press ENTER."
loop
    Input.KeyDown (chars)
    if chars (KEY_ENTER) then
        ex := 1
    end if
    exit when ex = 1
end loop
cls

loop
    Input.KeyDown (chars)

%Player 1 Controls
    if chars ('8') then
        loop
            drawdot (x, y, red)
            y := y + 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('2') then
                ex2 := 1
            elsif chars ('6') then
                ex2 := 1
            elsif chars ('4') then
                ex2 := 1
            end if
            exit when ex2 = 1
        end loop


    elsif chars ('6') then
        loop
            drawdot (x, y, red)
            x := x + 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('2') then
                ex2 := 1
            elsif chars ('8') then
                ex2 := 1
            elsif chars ('4') then
                ex2 := 1
            end if
            exit when ex2 = 1
        end loop


    elsif chars ('2') then
        loop
            drawdot (x, y, red)
            y := y - 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('6') then
                ex2 := 1
            elsif chars ('8') then
                ex2 := 1
            elsif chars ('4') then
                ex2 := 1
            end if
            exit when ex2 = 1
        end loop


    elsif chars ('4') then
        loop
            drawdot (x, y, red)
            x := x - 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('2') then
                ex2 := 1
            elsif chars ('8') then
                ex2 := 1
            elsif chars ('6') then
                ex2 := 1
            end if
            exit when ex2 = 1
        end loop
    end if
    ex2 := 0

   
%Player 2 Controls


    if chars ('w') then
        loop
            drawdot (x2, y2, green)       
            y2 := y2 + 1   
            delay(10)
            Input.KeyDown (chars)
            if chars ('d') then
                ex3 := 1
            elsif chars ('s') then
                ex3 := 1
            elsif chars ('a') then
                ex3 := 1
            end if
            exit when ex3 = 1
        end loop
       

    elsif chars ('d') then   
        loop
            drawdot (x2, y2, green)
            x2 := x2 + 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('w') then
                ex3 := 1
            elsif chars ('a') then
                ex3 := 1
            elsif chars ('s') then
                ex3 := 1
            end if
            exit when ex3 = 1
        end loop
           
       
    elsif chars ('s') then   
        loop
            drawdot (x2, y2, green)
            y2 := y2 - 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('d') then
                ex3 := 1
            elsif chars ('a') then
                ex3 := 1
            elsif chars ('w') then
                ex3 := 1
            end if
            exit when ex3 = 1
        end loop       
           
       
    elsif chars ('a') then   
        loop
            drawdot (x2, y2, green)
            x2 := x2 - 1
            delay (10)
            Input.KeyDown (chars)
            if chars ('w') then
                ex3 := 1
            elsif chars ('d') then
                ex3 := 1
            elsif chars ('s') then
                ex3 := 1
            end if
            exit when ex3 = 1
        end loop       
       
       
    end if
    ex3 := 0
end loop
Sponsor
Sponsor
Sponsor
sponsor
Mr. T




PostPosted: Sat Sep 24, 2005 12:57 pm   Post subject: Alex's Opinion

I would say try forking two processes, but then I would get yelled at. Rolling Eyes
So, there must be another way. Very Happy
Cervantes




PostPosted: Sat Sep 24, 2005 5:45 pm   Post subject: Re: Alex's Opinion

Pwned wrote:
I would say try forking two processes, but then I would get yelled at. Rolling Eyes


Yes, you would. Smile

Make your lines into pseudo-objects. I'm not talking about making a class for your lines, but rather create an array of records (or just a bunch of variables, if you know neither records nor arrays) to store information about the x and y position, and the x and y velocity. You could also store things like angle, length, colour, thickness, x and y acceleration, x and y jerk (change in acceleration over time), x and y jerk^2 (change in jerk over time)...

Now, looking at your code, we need to clean things up. You don't want to have those loops inside your main loop. They are unnecessary and also the source of your trouble.

So what do you do? Well, I'm not going to tell you the answer, because that defeats the purpose of learning. Rather, I'll give you a hint. What do you want to happen when you press the arrow key? You want the pseudo-object to move. There is no need to go into nested loops and check for input all over again. Just move it.

On that note, only draw the dot once. Only delay once. Only View.Update once. Only cls once.

Lastly, take a look at the way you exit your loops. There is no need for that variable, ex, ex2, etc. Instead, try this:

Turing:

loop
    Input.KeyDown (chars)
    if chars (KEY_ENTER) then
        exit
    end if
end loop

Better yet:
Turing:

loop
    Input.KeyDown (chars)
    exit when chars (KEY_ENTER)
end loop
Rinaldi363




PostPosted: Sat Sep 24, 2005 8:28 pm   Post subject: (No subject)

Can you please jsut tell me the answer. I learn better when I see it then I kinda realize what it does and how to use it.

Thanks
Cervantes




PostPosted: Sun Sep 25, 2005 7:45 am   Post subject: (No subject)

Rinaldi363 wrote:
Can you please jsut tell me the answer. I learn better when I see it then I kinda realize what it does and how to use it.

No, for two reasons. First, you won't always have someone around to tell you the answer. You will, in many situations, have to do it yourself! Second, if you always rely on others telling you the answer, you will always be (at least) one step behind. You'll never make your own discoveries; never get recognition for things you've done. You need to learn to learn for yourself.

Try it! It's not that difficult. Smile
codemage




PostPosted: Mon Sep 26, 2005 11:29 am   Post subject: (No subject)

Just go through point by point. Your code is rife with redundancy.

...and I quote (codemage paraphrase version):...

Quote:

*Clean things up. Don't have loops inside your main loop.
*On that note, only draw the dot once
*Only delay once
*Only View.Update once
*Only cls once.
*Look at the way you exit your loops - no need for an exit variable


Start with that.
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 1  [ 6 Posts ]
Jump to:   


Style:  
Search: