
-----------------------------------
Velocity
Tue Dec 13, 2011 6:42 pm

Remove Flickering (it came back) and program simple AI
-----------------------------------
What is it you are trying to achieve?
Remove the god damn flickering! once and for all... before i got rid of it but now i came back and its not gonig away. 

I also want to program the AI where i indicated it... i want to know how to go about doing that.

What is the problem you are having?
The flickering is really pissing me off. And the A.I is confusing :O

I want the A.I to follow the direction of the ball once i make it move ( which i can do ) but i want to know how to make the paddle follow the ball and make it miss sometimes but not alot

Describe what you have tried to solve this problem
Read all the documentations for flickering ... got nada from it. 

A.I  - I have not really looked that much into it, im just looking for someone to share some words of wisdom or a tutorial on it.



import GUI
View.Set ("graphics:638;690")
%_______The "Bank"_______%
type DataOfBlock :
    record
        x, y, width, height, center : int
        defeated : boolean
    end record
type DataOfShell :
    record
        right, top, left, bottom, c : int
    end record
type BallData :
    record
        x, y, r, xv, yv, speed, c : int
    end record
%_______Global Variables_______%
var PicID : int
var x : int := 700
var y : int := 500
var replay : string
var fontS : int
fontS := Font.New ("Verdana:20")
PicID := Pic.FileNew ("ball02.jpg")
Pic.Draw (PicID, maxx div 2 - (638 div 2), maxy div 2 - (690 div 2), picCopy)
%_______Procedures_______%
procedure TheGame
    setscreen ("graphics:1400;700,title:The   AI   BrickBreaker   Game")
    View.Set ("offscreen")
    %------------------------------
    %Block variables              %
    var xSpacing, ySpacing : int  %
    var blockH, blockW : int      %
    var shell : DataOfShell       %
    var ball : BallData           %%%
    var blockXDimension : int := 20 %
    var blockYDimension : int := 10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    var block : array 1 .. blockXDimension, 1 .. blockYDimension of DataOfBlock %
    shell.right := 710            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    shell.top := 680              %
    shell.left := 60              %
    shell.bottom := 50            %
    shell.c := 35                 %
    %------------------------------
    %---------------------------
    %Player Co-ords            %
    var x1, y1, x2, y2 : int   %
    x1 := 250                  %
    y1 := 25                   %
    x2 := 350                  %
    y2 := 50                   %
    %---------------------------
    %------------------------------------------------
    %Ball Co-ords                                   %
    var ball_x1, ball_x2, ball_y1, ball_y2 : int    %
    var ball_directionx : int := 1                  %
    var ball_directiony : int := 1                  %
    var ball_speed : int                            %
    ball_speed := 10                                %
    ball_x1 := 512                                  %
    ball_y1 := 200                                  %
    ball_x2 := 1024                                 %
    ball_y2 := 200                                  %
    %
    %------------------------------------------------
    %----------------------------------------
    %Game Basics                            %
    var continueGame : string               %
    var lives : int := 2                    %
    var score : int := 0                    %
    var timeElapsed : int := Time.Elapsed   %
    %----------------------------------------
    %----------------------------------------------------
    %Boundaries (paddle + ball)                         %
    var boundary_x1 : int := ((maxx div maxx) - 1) + 20 %
    var boundary_x2 : int := maxx - 20                  %
    var boundary_y1 : int := maxy - 20                  %
    var boundary_y2 : int := ((maxy div maxy) - 1) + 20 %
    %----------------------------------------------------
    var arrowKeys : array char of boolean
    lives += 1
    loop
        locate (1, 10)
        put "Lives: ", lives
        locate (1, 30)
        put "Score: ", score
        locate (1, 50)
        put "Game Time: ", Time.Elapsed / 1000
        var block_x1, block_y1, block_x2, block_y2 : int
        block_x1 := 50
        block_y1 := 300
        block_x2 := 100
        block_y2 := 350

        %%          Player Screen           %%________________________________________________

        drawfillbox (block_x1 + 40, block_y1 + 75, block_x2 + 40, block_y2 + 75, blue)
        drawfillbox (block_x1 + 120, block_y1 + 75, block_x2 + 120, block_y2 + 75, blue)
        drawfillbox (block_x1 + 200, block_y1 + 75, block_x2 + 200, block_y2 + 75, blue)
        drawfillbox (block_x1 + 280, block_y1 + 75, block_x2 + 280, block_y2 + 75, blue)
        drawfillbox (block_x1 + 360, block_y1 + 75, block_x2 + 360, block_y2 + 75, blue)

        drawfillbox (block_x1 + 40, block_y1 + 150, block_x2 + 40, block_y2 + 150, blue)
        drawfillbox (block_x1 + 120, block_y1 + 150, block_x2 + 120, block_y2 + 150, blue)
        drawfillbox (block_x1 + 200, block_y1 + 150, block_x2 + 200, block_y2 + 150, blue)
        drawfillbox (block_x1 + 280, block_y1 + 150, block_x2 + 280, block_y2 + 150, blue)
        drawfillbox (block_x1 + 360, block_y1 + 150, block_x2 + 360, block_y2 + 150, blue)

        drawfillbox (block_x1 + 40, block_y1 + 225, block_x2 + 40, block_y2 + 225, blue)
        drawfillbox (block_x1 + 120, block_y1 + 225, block_x2 + 120, block_y2 + 225, blue)
        drawfillbox (block_x1 + 200, block_y1 + 225, block_x2 + 200, block_y2 + 225, blue)
        drawfillbox (block_x1 + 280, block_y1 + 225, block_x2 + 280, block_y2 + 225, blue)
        drawfillbox (block_x1 + 360, block_y1 + 225, block_x2 + 360, block_y2 + 225, blue)

        drawfillbox (block_x1 + 40, block_y1 + 300, block_x2 + 40, block_y2 + 300, blue)
        drawfillbox (block_x1 + 120, block_y1 + 300, block_x2 + 120, block_y2 + 300, blue)
        drawfillbox (block_x1 + 200, block_y1 + 300, block_x2 + 200, block_y2 + 300, blue)
        drawfillbox (block_x1 + 280, block_y1 + 300, block_x2 + 280, block_y2 + 300, blue)
        drawfillbox (block_x1 + 360, block_y1 + 300, block_x2 + 360, block_y2 + 300, blue)

        drawfillbox (block_x1 + 440, block_y1 + 75, block_x2 + 440, block_y2 + 75, blue)
        drawfillbox (block_x1 + 440, block_y1 + 150, block_x2 + 440, block_y2 + 150, blue)
        drawfillbox (block_x1 + 440, block_y1 + 225, block_x2 + 440, block_y2 + 225, blue)
        drawfillbox (block_x1 + 440, block_y1 + 300, block_x2 + 440, block_y2 + 300, blue)

        %%          AI Screen           %%________________________________________________

        drawfillbox (block_x1 + 760, block_y1 + 75, block_x2 + 760, block_y2 + 75, blue)
        drawfillbox (block_x1 + 840, block_y1 + 75, block_x2 + 840, block_y2 + 75, blue)
        drawfillbox (block_x1 + 920, block_y1 + 75, block_x2 + 920, block_y2 + 75, blue)
        drawfillbox (block_x1 + 1000, block_y1 + 75, block_x2 + 1000, block_y2 + 75, blue)
        drawfillbox (block_x1 + 1080, block_y1 + 75, block_x2 + 1080, block_y2 + 75, blue)

        drawfillbox (block_x1 + 760, block_y1 + 150, block_x2 + 760, block_y2 + 150, blue)
        drawfillbox (block_x1 + 840, block_y1 + 150, block_x2 + 840, block_y2 + 150, blue)
        drawfillbox (block_x1 + 920, block_y1 + 150, block_x2 + 920, block_y2 + 150, blue)
        drawfillbox (block_x1 + 1000, block_y1 + 150, block_x2 + 1000, block_y2 + 150, blue)
        drawfillbox (block_x1 + 1080, block_y1 + 150, block_x2 + 1080, block_y2 + 150, blue)

        drawfillbox (block_x1 + 760, block_y1 + 225, block_x2 + 760, block_y2 + 225, blue)
        drawfillbox (block_x1 + 840, block_y1 + 225, block_x2 + 840, block_y2 + 225, blue)
        drawfillbox (block_x1 + 920, block_y1 + 225, block_x2 + 920, block_y2 + 225, blue)
        drawfillbox (block_x1 + 1000, block_y1 + 225, block_x2 + 1000, block_y2 + 225, blue)
        drawfillbox (block_x1 + 1080, block_y1 + 225, block_x2 + 1080, block_y2 + 225, blue)

        drawfillbox (block_x1 + 760, block_y1 + 300, block_x2 + 760, block_y2 + 300, blue)
        drawfillbox (block_x1 + 840, block_y1 + 300, block_x2 + 840, block_y2 + 300, blue)
        drawfillbox (block_x1 + 920, block_y1 + 300, block_x2 + 920, block_y2 + 300, blue)
        drawfillbox (block_x1 + 1000, block_y1 + 300, block_x2 + 1000, block_y2 + 300, blue)
        drawfillbox (block_x1 + 1080, block_y1 + 300, block_x2 + 1080, block_y2 + 300, blue)

        drawfillbox (block_x1 + 1160, block_y1 + 75, block_x2 + 1160, block_y2 + 75, blue)
        drawfillbox (block_x1 + 1160, block_y1 + 150, block_x2 + 1160, block_y2 + 150, blue)
        drawfillbox (block_x1 + 1160, block_y1 + 225, block_x2 + 1160, block_y2 + 225, blue)
        drawfillbox (block_x1 + 1160, block_y1 + 300, block_x2 + 1160, block_y2 + 300, blue)

        %%_______________________________________________________________________________%%

        View.UpdateArea (0, 0, maxx, maxy)
        delay (5)
       
        Input.KeyDown (arrowKeys)
        if arrowKeys (KEY_RIGHT_ARROW) then
            x1 += 10
            x2 += 10
        end if
        if arrowKeys (KEY_LEFT_ARROW) then
            x2 -= 10
            x1 -= 10
        end if

        if x1 > 250 and x2 < 350 then
            x1 := 100
        elsif x1 < 250 and x2 > 350 then
            x2 := 100
        elsif y1 > 25 and y2 < 50 then
            y1 := 25
        elsif y1 < 25 and y2 > 50 then
            y2 := 25
        end if
        if arrowKeys (KEY_ESC) then
            cls
            break
        end if
        var colorchanger1 : int
        randint (colorchanger1, 1, 101)
        delay (1)
        drawfillbox (x1, y1, x2, y2, colorchanger1)
        delay (5)
        cls
        drawbox (20, 20, maxx - 20, maxy - 20, 51)
        drawbox (5, 5, maxx - 5, maxy - 5, 51)
        drawfillbox (250, 900, 350, 925, 101)
        drawfillbox (maxx div 2 - 40, 20, maxx div 2 - 35, maxy - 20, 51)
        drawfilloval (ball_x1, ball_y1, 15, 15, 48)
        drawfill (maxx - 15, maxy - 15, 71, 51)
        View.UpdateArea (0, 0, maxx, maxy)
        if x1 >= maxx - 125 or x2 >= maxx - 25 then
            x1 -= 10
            x2 -= 10
        end if
        if x1 = maxx div 2 - 55 then
            ball_directionx *= -1
        end if
        if ball_x1  1 then
            x1_1 += 10
            x2_2 += 10
        end if



        %%_________________________________________________%%
        if ball_y1 < 25 then
            lives -= 1
            if lives 