azuew

Hi everyone. We have a project which is given by our lecturer and we don't move on this project. Firstly our game : www.miniclip.com/games/fat-slice/tr/
Our primary programming language is C. We codified ball function but there is a some mistakes. We don't fix it and carry out the idea to cutting function. We use alleg.lib and work on Visual C++ 2010
Express.We don't have an idea about ball's moving after cutting the image. Balls move as - no vertical no horizontal - cross. They move on different places
and different way. They pass through each other and they are flicker.Double buffering doesn't work that there is two ball on the screen. Can you help us?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <allegro.h>
 
void Baslat();
void Bitir();
void moveBall()
 
int main() {
Baslat();
while (!key[KEY_ESC]) {
 
int width = 220;//width of box
int height = 440;//height of box
int radius = 5;//radius of ball

int x = 110;//initial position of ball
int y = 220;//initial position of ball

int tempX;
int tempY;

//Keep track of direction of motion here.
//0= northwest 1 = southwest, 2 = northeast,
//3 = southeast
int dir;
moveBall();

}
Bitir();
return 0;
}
END_OF_MAIN()
 
void Baslat() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1);
}
install_timer();
install_keyboard();
install_mouse();
 
}
void Bitir() {
clear_keybuf();
 
}
void moveBall(){
  //Save current location of ball.
  tempX = x;
  tempY = y;

  switch(dir){
    case 0:
      //Direction is northwest.
      if((x <= radius) || (y <= radius)){
        //Ball has collided with either the left wall or
        // the top wall.
        //Get a new direction. Note that if the new
        // direction is the same as the old one, control
        // will come back to here to get still another
        // direction the next time the functionis called.
        dir = rand() % 4;
      }else{
        //No collision, set new location for the ball
        --x;
        --y;
      }//end else
    break;
    case 1:
      //Direction is southwest.
      if(((x <= radius) || (y >= (height - radius)))){
        //get a new direction
        dir = rand() % 4;
      }else{
        //set new location for the ball
        --x;
        ++y;
      }//end else
    break;
    case 2:
      //Direction is northeast.
      if(((x >= (width - radius)) || (y <= radius))){
        //get a new direction
        dir = rand() % 4;
      }else{
        //set new location for the ball
        ++x;
        --y;
      }//end else
    break;
    case 3:
      //Direction is southeast
      if((((x >= (width - radius)) ||
                              (y >= (height - radius))))){
        //get a new direction
        dir = rand() % 4;
      }else{
        //set new location for the ball
        ++x;
        ++y;
      }//end else

  }//end switch 


This is not working exactly. We have some problems that cutting shape and bouncing ball. We make bouncing ball but the ball is flicker. Double buffering is not work on it. Our another problem is that two balls ,which are in the shape, through pass each other. How can we fix that?
So our another problem - i think it is a big problem - that we don't cut the shape. What can we do to make it?








We don't have an idea about slicing the shape. Can you help us? And you send the function better than that
We hurry up because we should finish this project in 6 days.

Note : We are using Allegro v4.2.3.

Is there someone who help us with a simple codes?
Topic archived. No new replies allowed.