
-----------------------------------
Radorii Reikane
Tue Jun 12, 2007 3:46 pm

Frustrations Toward the Parallel Port
-----------------------------------
Top of the morning to you all. It seems that this is the only place I can find to seek out Turing Help on the web. I looked around for a topic that had the same problem as me, but nothing turned out well. So therefore, I shall now seek the help I may (or may not) need.

 I'm currently in a Computer Engineering/Programming class at my high school right now. The engineering part of it was nice, I learned a few new tricks such as ping, msconfig, and how to take a computer apart without any sort of medical malpractice. As fun as that was (actually, it was a nightmare since my not-so fellow classmates are the worst people I could ever imagine), that is now closed up and the programming starts. We are using Turing, which is a bore, since I already learned about it (and Java) in two other classes. Then my teacher proved to be much-less-than-entertaining with it, so I decided to ignore whatever assignments/exercises he gave and I did what I wanted.

 So what did I end up making? Why Pong of course! Everyone loves Pong. I thought since the last time I used Turing, I wasn't really able to churn out a game, so something simple would have been great to start off.

 Then came the ISU project. Integration where we all use a parallel port to make Turing do something to an old-fashioned electronics breadboard. Everyone else was doing some "Traffic Light" sort of thing using the parallelput command. My immediate thought was "This is too boring". So I wondered if that fabled "Joystick Game using Turing" would do.

 At first, I had the problem of it not picking up the Parallel Port/I-O Device, but that was resovled quickly. But now, I am left in a bit of a jam. You see, I know Turing is able to pick up the Parallel Port and the power from the breadboard, since it doesn't crash at the parallelget command, but it seems even there, it just won't work! I've got pins 10, 11, 12, and 13 reserved, with (for example) "power to pin 10 means the player one paddle moves up" or something like that. ... But when I run the game with the parallel port working, it won't accept any power from the breadboards, and even if pin 10 isn't plugged in, the player one paddle moves up. I've recently learned that I might also need a buffer chip before sending the power to their pins through the peripheral, but that isn't the point. What concerns me is that even if only the ground pin is plugged into the breadboard, the player one paddle will still go up without any input at all and the other types of inputs remain inactive. That fact that it is doing that means my syntax is messed up. The book I read on turning was very vague with how to use IF Statements in Combination with parallelget in the first place, so I hope you good people can steer me in the correct direction!

 So I swiped a copy of Turing off my school's network using the old "copypaste onto a USB Drive" method and brought it here. This is the full code for the game. I've shrunken the irrelevant working parts of the game and bolded the stuff that is of issue. Please give it a look over and if you know what is wrong, please say.


setscreen ("graphics")
View.Set ("offscreenonly")
var control : array char of boolean
var ballx, bally, dir, on, skipper, score, level, bouncecombo, landcombo, pgoals, egoals, levelup, messup, difficulty, ruleset, intro, menu, ctype, mode, endgame, boostspeed, joystick : int := 0
var timeplayed : real := 0
var titlefont : int := Font.New ("sans serif:100:bold")
% Dir Settings:
%   1 := Left Up
%   2 := Right Up
%   3 := Left Down
%   4 := Right Down
% Joystick Inputs
% Pin 10 (Value of 64) is Player One UP.
% Pin 11 (Value of 128) is Player One DOWN.
% Pin 12 (Value of 32) is Player Two UP.
% Pin 13 (Value of 16) is Player Two DOWN.
loop
    ballx := 0
    bally := 0
    dir := 0
    on := 0
    skipper := 0
    score := 0
    level := 0
    bouncecombo := 0
    landcombo := 0
    pgoals := 0
    egoals := 0
    levelup := 0
    messup := 0
    difficulty := 0
    intro := 0
    menu := 0
    ctype := 0
    mode := 0
    endgame := 0
    ruleset := 0
    timeplayed := 0
    boostspeed := 0
    % -------------
    difficulty := 75
    menu := 0
    ctype := 0
    mode := 1
    loop % Loop the Entire Game
        % Title Screen
        loop
            Input.KeyDown (control)
            colorback (7)
            color (0)
            cls
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put "                                 Start Game      "
            if mode = 1 then
                put "                             Mode    - VS COM    "
            else
                put "                             Mode    - VS MAN    "
            end if
            if ctype = 0 then
                put "                             Control - Keyboard  "
            else
                put "                             Control - Joystick  "
            end if
            if ruleset = 0 then
                put "                             Rules: Slow -To100  "
                level := 0
            elsif ruleset = 1 then
                put "                             Rules: Mild -To100  "
                level := 49
            elsif ruleset = 2 then
                put "                             Rules: Fast -To100  "
                level := 74
            elsif ruleset = 3 then
                put "                             Rules: Slow-10Goal  "
                level := 0
            elsif ruleset = 4 then
                put "                             Rules: Mild-10Goal  "
                level := 49
            elsif ruleset = 5 then
                put "                             Rules: Fast-10Goal  "
                level := 74
            end if
            if mode = 2 then
                if ctype = 0 then
                    put "                  (Player 2 uses the 8 and 2 Keys on the Numpad)"
                else
                    put ""
                end if
            else
                put ""
            end if
            put "                            Radorii Reikane 2007"
            put ""
            colorback (0)
            if menu = 0 then
                locate (18, 25 + 3)
                put " " ..
                locate (18, 46 + 3)
                put " " ..
            elsif menu = 1 then
                locate (19, 25 + 3)
                put " " ..
                locate (19, 46 + 3)
                put " " ..
            elsif menu = 2 then
                locate (20, 25 + 3)
                put " " ..
                locate (20, 46 + 3)
                put " " ..
            elsif menu = 3 then
                locate (21, 25 + 3)
                put " " ..
                locate (21, 46 + 3)
                put " " ..
            end if
            Font.Draw ("PONG", 119, 220, titlefont, 0)
            View.Update
            Time.Delay (100)
            Draw.Cls
            if control (' ') then
                if menu = 0 then
                    exit
                elsif menu = 1 then
                    if mode = 1 then
                        mode := 2
                    else
                        mode := 1
                    end if
                elsif menu = 2 then
                    if ctype = 0 then
                        ctype := 1
                    else
                        ctype := 0
                    end if
                elsif menu = 3 then
                    if ruleset = 0 then
                        ruleset := 1
                    elsif ruleset = 1 then
                        ruleset := 2
                    elsif ruleset = 2 then
                        ruleset := 3
                    elsif ruleset = 3 then
                        ruleset := 4
                    elsif ruleset = 4 then
                        ruleset := 5
                    elsif ruleset = 5 then
                        ruleset := 0
                    end if
                end if
            elsif control (KEY_DOWN_ARROW) then
                if menu not= 3 then
                    menu := menu + 1
                end if
            elsif control (KEY_UP_ARROW) then
                if menu not= 0 then
                    menu := menu - 1
                end if
            end if
        end loop
        if mode = 1 then
            colorback (7)
            color (0)
            cls
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put ""
            put "                                 Start Game      "
            if mode = 1 then
                put "                             Mode    - VS COM    "
            else
                put "                             Mode    - VS MAN    "
            end if
            if ctype = 0 then
                put "                             Control - Keyboard  "
            else
                put "                             Control - Joystick  "
            end if
            if ruleset = 0 then
                put "                             Rules: Slow -To100  "
            elsif ruleset = 1 then
                put "                             Rules: Mild -To100  "
            elsif ruleset = 2 then
                put "                             Rules: Fast -To100  "
            elsif ruleset = 3 then
                put "                             Rules: Slow-10Goal  "
            elsif ruleset = 4 then
                put "                             Rules: Mild-10Goal  "
            elsif ruleset = 5 then
                put "                             Rules: Fast-10Goal  "
            end if
            put ""
            put "                            Radorii Reikane 2007"
            Font.Draw ("PONG", 119, 220, titlefont, 0)
            put ""
            colorback (7)
            color (0)
            locate (1, 1)
            put "Please Wait"
            colorback (0)
            locate (2, 1)
            for i : 1 .. 80
                Time.Delay (10)
                put " " ..
                View.Update
            end for
            colorback (0)
            cls
            Draw.Cls
            % Difficulty
            loop
                Input.KeyDown (control)
                colorback (7)
                color (0)
                cls
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put ""
                put "                                   Easy COM        "
                put "                                   Medi COM        "
                put "                                   Hard COM        "
                put ""
                put ""
                put ""
                colorback (0)
                if menu = 0 then
                    locate (19, 25 + 3)
                    put " " ..
                    locate (19, 46 + 3)
                    put " " ..
                elsif menu = 1 then
                    locate (20, 25 + 3)
                    put " " ..
                    locate (20, 46 + 3)
                    put " " ..
                else
                    locate (21, 25 + 3)
                    put " " ..
                    locate (21, 46 + 3)
                    put " " ..
                end if
                Font.Draw ("PONG", 119, 220, titlefont, 0)
                View.Update
                Time.Delay (100)
                Draw.Cls
                if control (' ') then
                    colorback (7)
                    color (0)
                    cls
                    Draw.Cls
                    colorback (7)
                    cls
                    Font.Draw ("PONG", 119, 220, titlefont, 0)
                    if menu = 0 then
                        difficulty := 75
                        colorback (7)
                        color (0)
                        locate (1, 1)
                        put "Please Wait"
                        colorback (0)
                        locate (2, 1)
                        for i : 1 .. 80
                            Time.Delay (10)
                            put " " ..
                            View.Update
                        end for
                        colorback (0)
                        cls
                        Draw.Cls
                        exit
                    elsif menu = 1 then
                        difficulty := 85
                        colorback (7)
                        color (0)
                        locate (1, 1)
                        put "Please Wait"
                        colorback (0)
                        locate (2, 1)
                        for i : 1 .. 80
                            Time.Delay (10)
                            put " " ..
                            View.Update
                        end for
                        colorback (0)
                        cls
                        Draw.Cls
                        exit
                    elsif menu = 2 then
                        difficulty := 95
                        colorback (7)
                        color (0)
                        locate (1, 1)
                        put "Please Wait"
                        colorback (0)
                        locate (2, 1)
                        for i : 1 .. 80
                            Time.Delay (10)
                            put " " ..
                            View.Update
                        end for
                        colorback (0)
                        cls
                        Draw.Cls
                        exit
                    end if
                elsif control (KEY_DOWN_ARROW) then
                    if menu not= 2 then
                        menu := menu + 1
                    end if
                elsif control (KEY_UP_ARROW) then
                    if menu not= 0 then
                        menu := menu - 1
                    end if
                end if
            end loop
        end if
        % Game Screen
        var ppad, epad : int := 10
        loop
            if on = 0 then     % If the game has not started, determine the position of the ball.
                ballx := Rand.Int (1, 2)
                if ballx = 1 then
                    ballx := 40
                else
                    ballx := 41
                end if
                loop
                    randint (bally, 6, 20)
                    exit when bally > 6 and bally < 20
                end loop
            end if
            % Draw the Game
            if ctype = 0 then
                Input.KeyDown (control)
            else
                joystick := 0
                joystick := parallelget
            end if
            colorback (7)
            color (0)
            cls
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            colorback (7)
            locate (1, 3)
            put "Score: ", score ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (2, 3)
            put "Speed: ", level ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (1, 18)
            put "Paddle Combo: ", bouncecombo ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (2, 18)
            put "Goal Combo:   ", landcombo ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (1, 40)
            put "Player One Goals: ", pgoals ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (2, 40)
            put "Player Two Goals: ", egoals ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (1, 65)
            put "Next Level: " ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (2, 66)
            put levelup ..
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (3, 1)
            colorback (0)
            color (0)
            put "                                                                                "
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (23, 1)
            put "                                                                                "
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            locate (bally, ballx)
            put " " ..
            for i : 0 .. 4
                locate (ppad + i, 2)
                if intro = 0 then
                    View.Update
                    Time.Delay (100)
                end if
                put " " ..
            end for
            for i : 0 .. 4
                if intro = 0 then
                    View.Update
                    Time.Delay (100)
                end if
                locate (epad + i, 79)
                put " " ..
            end for
            locate (24, 1)
            color (0)
            colorback (7)
            if ruleset = 0 then
                put "                          Rules In Use: Slow Game to 100  " ..
            elsif ruleset = 1 then
                put "                          Rules In Use: Mild Game to 100  " ..
            elsif ruleset = 2 then
                put "                          Rules In Use: Fast Game to 100  " ..
            elsif ruleset = 3 then
                put "                       Rules In Use: Slow Game to 10 Goals  " ..
            elsif ruleset = 4 then
                put "                       Rules In Use: Mild Game to 10 Goals  " ..
            elsif ruleset = 5 then
                put "                       Rules In Use: Fast Game to 10 Goals  " ..
            end if
            if intro = 0 then
                View.Update
                Time.Delay (100)
            end if
            if on = 0 then     % If the game has not started, determine the direction of the ball and start the game.
                randint (dir, 1, 4)
                on := 1
                intro := 1
            else     % Move the ball
                if dir = 1 then
                    ballx := ballx - 1
                    bally := bally - 1
                elsif dir = 2 then
                    ballx := ballx + 1
                    bally := bally - 1
                elsif dir = 3 then
                    ballx := ballx - 1
                    bally := bally + 1
                elsif dir = 4 then
                    ballx := ballx + 1
                    bally := bally + 1
                end if
                if bally = 4 then     % Change direction if the ball hits the top of the field.
                    if dir = 1 then
                        dir := 3
                    elsif dir = 2 then
                        dir := 4
                    end if
                elsif bally = 22 then     % Change direction if the ball hits the bottom of the field.
                    if dir = 3 then
                        dir := 1
                    elsif dir = 4 then
                        dir := 2
                    end if
                elsif ballx = 3 then     % If the ball is right before the Player Paddle.
                    if bally >= ppad and bally = 99999 then
                            level := level + 1
                        end if
                        if dir = 1 then
                            dir := 2
                        elsif dir = 2 then
                            dir := 1
                        elsif dir = 3 then
                            dir := 4
                        elsif dir = 4 then
                            dir := 3
                        end if
                    end if
                elsif ballx = 78 then     % If the ball is right before the Computer Paddle.
                    if bally >= epad and bally = 80 then
                        landcombo := landcombo + 1
                        pgoals := pgoals + 1
                    else
                        landcombo := 0
                        egoals := egoals + 1
                    end if
                    score := score + (landcombo * 1000)
                    on := 0
                end if
                if mode not= 2 then
                    if ballx >= 40 then     % If the ball is on the computer's side of the field, move the computer paddle at full speed.
                        randint (messup, 0, 100)
                        if messup > difficulty then
                            if dir 