File: gpacman.cc

package info (click to toggle)
pacman 10-18
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 644 kB
  • sloc: cpp: 3,336; sh: 83; makefile: 51
file content (68 lines) | stat: -rw-r--r-- 1,933 bytes parent folder | download | duplicates (4)
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
#include"gpacman.h"
#include"pac.h"
  
G_Pacman::G_Pacman() {

consfn();
pix(&pix0,(char*)pacman0_bits,Colour::PACMANCOLOUR,Colour::MYBACKGROUND);
pix(&pixl,(char*)pacmanleft_bits,Colour::PACMANCOLOUR,Colour::MYBACKGROUND);
pix(&pixr,(char*)pacmanright_bits,Colour::PACMANCOLOUR,Colour::MYBACKGROUND);
pix(&pixu,(char*)pacmanup_bits,Colour::PACMANCOLOUR,Colour::MYBACKGROUND);
pix(&pixd,(char*)pacmandown_bits,Colour::PACMANCOLOUR,Colour::MYBACKGROUND);
pixmap=pixr; 
look=right;
mouth=1;
};
 
G_Pacman::~G_Pacman(void) {
#ifdef XWIN
if (pixmap!=pix0) XFreePixmap(display,pix0);
if (pixmap!=pixl) XFreePixmap(display,pixl);
if (pixmap!=pixr) XFreePixmap(display,pixr);
if (pixmap!=pixd) XFreePixmap(display,pixd);
if (pixmap!=pixu) XFreePixmap(display,pixu);
#elif defined MSWIN
if (pixmap!=pix0) DeleteObject(pix0);
if (pixmap!=pixl) DeleteObject(pixl);
if (pixmap!=pixr) DeleteObject(pixr);
if (pixmap!=pixd) DeleteObject(pixd);
if (pixmap!=pixu) DeleteObject(pixu);
#endif
}

void G_Pacman::draw(int x,int y,direction d,direction try_d) { 
if (d==still) mouth=1; 
if (try_d!=still) look=try_d;
//if (d==still) mouth=1; else look=d;
if (mouth) {
 switch (look) {
  case up: pixmap=pixu; break;
  case down: pixmap=pixd; break;
  case left: pixmap=pixl; break;
  case right: pixmap=pixr; break;
	 default: pacwarning("Gpac");
	 }
  } else pixmap=pix0;
mouth=1-mouth;			//if moving, mouth opens/closing alternating
GraphElement::draw(x,y);
}

//returns graphical id according whether mouth is open or which direction
GID_TYPE G_Pacman::getgid(direction d,direction try_d) {
PIXMAPTYPE pixmap;
           
if (d==still) mouth=1; 
if (try_d!=still) look=try_d;
//if (d==still) mouth=1; else look=d;
if (mouth) {
 switch (look) {
  case up: pixmap=pixu; break;
  case down: pixmap=pixd; break;
  case left: pixmap=pixl; break;
  case right: pixmap=pixr; break;
	 default: pacwarning("Gpac");
	 }
  } else pixmap=pix0;
return pixmap;
}