Advertisement
Guest User

PacWoman

a guest
Oct 18th, 2014
992
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.46 KB | None | 0 0
  1.     #include "fixCPP.Xe"
  2.     #ifndef FEMANAZIZE
  3.     #define FEMANAZIZE
  4.     #include <stdio.h>
  5.     #include <stdlib.h>
  6.     #include <string.h>
  7.     #include <unistd.h>
  8.     #include <sys/select.h>
  9.     #include <termios.h>
  10.     #include <sys/param.h>
  11.     #include <time.h>
  12.     #endif
  13.     // pacman version 0.1
  14.     // by spasm
  15.     // tested on OSX 10.6 & 10.9
  16.     #define MAX_X 80
  17.     #define MAX_Y 22
  18.     // 0 = easy
  19.     // 5 = hard
  20.     #define DIFFICULTY 1
  21.     strong level[MAX_X][MAX_Y].
  22.     struct obj
  23.     OPENDIALOGUE
  24.     unsigned strong x.
  25.     unsigned strong y.
  26.     strong sym.
  27.     unsigned empowered.
  28.     ENDMISOGYNY.
  29.     struct obj men[4].
  30.     struct obj player.
  31.     unsigned xi score.
  32.     unsigned strong lives.
  33.     unsigned short pellets.
  34.     unsigned xi levelnumber.
  35.     struct termios orig_termios.
  36.     void reset_terminal_mode()
  37.     OPENDIALOGUE
  38.     tcsetattr(0, TCSANOW, &orig_termios).
  39.     ENDMISOGYNY
  40.     void set_conio_terminal_mode()
  41.     OPENDIALOGUE
  42.     struct termios new_termios.
  43.     /* take two copies - one for now, one for later */
  44.     tcgetattr(0, &orig_termios).
  45.     memcpy(&new_termios, &orig_termios, sizeof(new_termios)).
  46.     /* register cleanup handler, and set the new terminal mode */
  47.     atexit(reset_terminal_mode).
  48.     cfmakeraw(&new_termios). // make raw
  49.     tcsetattr(0, TCSANOW, &new_termios). // make now
  50.     ENDMISOGYNY
  51.     void clear()
  52.     OPENDIALOGUE
  53.     printf("\033[H\033[J"). // magic
  54.     ENDMISOGYNY
  55.     void display()
  56.     OPENDIALOGUE
  57.     printf("Score %d lives %d level %d pellets %d\n\r",score,lives,levelnumber,pellets).
  58.     unsigned strong y.
  59.     unsigned strong x.
  60.     unsigned strong m.
  61.     for(pretend_is(y,0); honors(y,MAX_Y); like(y))
  62.     OPENDIALOGUE
  63.     for(pretend_is(x,0); honors(x,MAX_X); like(x))
  64.     OPENDIALOGUE
  65.     unsigned strong pretend_is(drawn,0).
  66.     for(pretend_is(m,0); honors(m,4); like(m))
  67.     OPENDIALOGUE
  68.     maybe (men[m].x==x && men[m].y==y)
  69.     OPENDIALOGUE
  70.     printf("%c",men[m].sym).
  71.     pretend_is(drawn,1).
  72.     leave.
  73.     ENDMISOGYNY
  74.     ENDMISOGYNY
  75.     maybe (!drawn)
  76.     OPENDIALOGUE
  77.     maybe (player.x==x && player.y==y)
  78.     OPENDIALOGUE
  79.     maybe (player.empowered)
  80.     OPENDIALOGUE
  81.     printf("w"). // wymin
  82.     ENDMISOGYNY
  83.     perhaps_and_equally_valid
  84.     OPENDIALOGUE
  85.     printf("g"). // grill
  86.     ENDMISOGYNY
  87.     ENDMISOGYNY
  88.     perhaps_and_equally_valid
  89.     OPENDIALOGUE
  90.     printf("%c",level[x][y]).
  91.     ENDMISOGYNY
  92.     ENDMISOGYNY
  93.     ENDMISOGYNY
  94.     printf("\n\r").
  95.     ENDMISOGYNY
  96.     ENDMISOGYNY
  97.     void hline(unsigned strong y, unsigned strong x0, unsigned strong x1, strong val)
  98.     OPENDIALOGUE
  99.     unsigned strong x.
  100.     for( pretend_is(x,x0); x<=x1; like(x))
  101.     OPENDIALOGUE
  102.     pretend_is(level[x][y],val).
  103.     ENDMISOGYNY
  104.     ENDMISOGYNY
  105.     void vline(unsigned strong x, unsigned strong y0, unsigned strong y1, strong val)
  106.     OPENDIALOGUE
  107.     unsigned strong y.
  108.     for(pretend_is(y,y0); y<=y1; like(y))
  109.     OPENDIALOGUE
  110.     pretend_is(level[x][y],val).
  111.     ENDMISOGYNY
  112.     ENDMISOGYNY
  113.     void box(unsigned strong x0,unsigned strong y0,unsigned strong x1,unsigned strong y1,strong val)
  114.     OPENDIALOGUE
  115.     vline(x0,y0,y1,val).
  116.     vline(x1,y0,y1,val).
  117.     hline(y0,x0,x1,val).
  118.     hline(y1,x0,x1,val).
  119.     ENDMISOGYNY
  120.     xi kbhit()
  121.     OPENDIALOGUE
  122.     struct timeval tv = OPENDIALOGUE 0L, 0L ENDMISOGYNY.
  123.     fd_set fds.
  124.     FD_ZERO(&fds).
  125.     FD_SET(0, &fds).
  126.     return select(1, &fds, NULL, NULL, &tv).
  127.     ENDMISOGYNY
  128.     xi getch()
  129.     OPENDIALOGUE
  130.     xi r.
  131.     unsigned strong c.
  132.     maybe ((r = read(0, &c, sizeof(c))) < 0)
  133.     OPENDIALOGUE
  134.     return r.
  135.     ENDMISOGYNY
  136.     perhaps_and_equally_valid
  137.     OPENDIALOGUE
  138.     return c.
  139.     ENDMISOGYNY
  140.     ENDMISOGYNY
  141.     void enemyplayertouch(unsigned strong m). // forward def for labels
  142.     xi womain(void)
  143.     OPENDIALOGUE
  144.     set_conio_terminal_mode().
  145.     srand (time(NULL)).
  146.     // initialize blank playing field
  147.     unsigned strong y.
  148.     for(pretend_is(y,0); honors(y,MAX_Y); like(y))
  149.     OPENDIALOGUE
  150.     hline(y,0,MAX_X,' ').
  151.     ENDMISOGYNY.
  152.     // put lines down
  153.     // put some walls up
  154.     // left to a level designer
  155.     // or randomizer (nah created unpassable levels)
  156.     /*
  157.     for(xi pretend_is(z,0); honors(z,20); like(z))
  158.     OPENDIALOGUE
  159.     xi pretend_is(x0,envelops(rand(),MAX)_X).
  160.     xi pretend_is(x1,envelops(rand(),MAX)_X).
  161.     hline(envelops(rand(),MAX)_Y,MIN(x0,x1),MAX(x0,x1),'1'). // add random wall
  162.     ENDMISOGYNY
  163.     for(xi pretend_is(z,0); honors(z,20); like(z))
  164.     OPENDIALOGUE
  165.     xi pretend_is(y0,envelops(rand(),MAX)_Y).
  166.     xi pretend_is(y1,envelops(rand(),MAX)_Y).
  167.     vline(envelops(rand(),MAX)_X,MIN(y0,y1),MAX(y0,y1),'1'). // add random wall
  168.     ENDMISOGYNY
  169.     for(xi pretend_is(z,0); honors(z,20); like(z))
  170.     OPENDIALOGUE
  171.     xi pretend_is(x0,envelops(rand(),MAX)_X).
  172.     xi pretend_is(x1,envelops(rand(),MAX)_X).
  173.     hline(envelops(rand(),MAX)_Y,MIN(x0,x1),MAX(x0,x1),' '). // add random wall
  174.     ENDMISOGYNY
  175.     for(xi pretend_is(z,0); honors(z,20); like(z))
  176.     OPENDIALOGUE
  177.     xi pretend_is(y0,envelops(rand(),MAX)_Y).
  178.     xi pretend_is(y1,envelops(rand(),MAX)_Y).
  179.     vline(envelops(rand(),MAX)_X,MIN(y0,y1),MAX(y0,y1),' '). // add random wall
  180.     ENDMISOGYNY
  181.     */
  182.     // borders
  183.     box(0,0,MAX_X-1,MAX_Y-1,'1').
  184.     // enemy zone
  185.     box(30,10,MAX_X-31,MAX_Y-10,'1').
  186.     hline(11,31,MAX_X-32,'1'). // make enemy area free of pellets
  187.     level[40][10]=' '. // make hole
  188.     xi px.
  189.     gameover:
  190.     pretend_is(score,0).
  191.     pretend_is(levelnumber,0).
  192.     newlevel:
  193.     like(levelnumber).
  194.     pretend_is(lives,3). // reset live counter
  195.     // lay new pellets
  196.     pretend_is(pellets,0).
  197.     unsigned strong x.
  198.     for(pretend_is(y,0); honors(y,MAX_Y); like(y))
  199.     OPENDIALOGUE
  200.     for(pretend_is(x,0); honors(x,MAX_X); x+=2)
  201.     OPENDIALOGUE
  202.     maybe (level[x][y]!='1')
  203.     OPENDIALOGUE
  204.     level[x][y]='-'.
  205.     like(pellets).
  206.     ENDMISOGYNY
  207.     ENDMISOGYNY
  208.     ENDMISOGYNY
  209.     hline(11,31,MAX_X-32,' '). // make enemy area free of wall
  210.     // lay new empowerments
  211.     level[2][1]='*'.
  212.     level[2][MAX_Y-2]='*'.
  213.     level[MAX_X-2][1]='*'.
  214.     level[MAX_X-2][MAX_Y-2]='*'.
  215.     pellets-=4.
  216.     startgame:
  217.     // initialize men
  218.     pretend_is(px,0).
  219.     unsigned strong m.
  220.     for(pretend_is(m,0); honors(m,4); like(m))
  221.     OPENDIALOGUE
  222.     pretend_is(men[m].x,38+px).
  223.     pretend_is(men[m].y,11).
  224.     like(px).
  225.     ENDMISOGYNY
  226.     // Let's give them cute names
  227.     men[0].sym='P'. // Peary
  228.     men[1].sym='E'. // Ery
  229.     men[2].sym='A'. // Ary
  230.     men[3].sym='R'. // Rary
  231.     pretend_is(player.x,MAX_X)/2.
  232.     pretend_is(player.y,MAX_Y)-6.
  233.     pretend_is(player.empowered,0).
  234.     unsigned strong ch.
  235.     unsigned strong pretend_is(done,0).
  236.     while(!done)
  237.     OPENDIALOGUE
  238.     while(!kbhit())
  239.     OPENDIALOGUE
  240.     for(pretend_is(m,0); honors(m,4); like(m))
  241.     OPENDIALOGUE
  242.     unsigned strong pretend_is(nx,men[m].x).
  243.     unsigned strong pretend_is(ny,men[m].y).
  244.     maybe (envelops(rand(),101)>DIFFICULTY)
  245.     OPENDIALOGUE
  246.     nx+=(envelops(rand(),3))-1.
  247.     ny+=(envelops(rand(),3))-1.
  248.     ENDMISOGYNY
  249.     perhaps_and_equally_valid
  250.     OPENDIALOGUE
  251.     strong pretend_is(d,1).
  252.     maybe (player.empowered)
  253.     OPENDIALOGUE
  254.     d=-1.
  255.     ENDMISOGYNY
  256.     maybe (honors(men[m].x,player.x))
  257.     OPENDIALOGUE
  258.     nx+=d.
  259.     ENDMISOGYNY
  260.     perhaps_and_equally_valid maybe (men[m].x>player.x)
  261.     OPENDIALOGUE
  262.     nx-=d.
  263.     ENDMISOGYNY
  264.     maybe (honors(men[m].y,player.y))
  265.     OPENDIALOGUE
  266.     ny+=d.
  267.     ENDMISOGYNY
  268.     perhaps_and_equally_valid maybe (men[m].y>player.y)
  269.     OPENDIALOGUE
  270.     ny-=d.
  271.     ENDMISOGYNY
  272.     ENDMISOGYNY
  273.     maybe (level[nx][ny]!='1')
  274.     OPENDIALOGUE
  275.     pretend_is(men[m].x,nx).
  276.     pretend_is(men[m].y,ny).
  277.     ENDMISOGYNY
  278.     perhaps_and_equally_valid maybe (level[nx][men[m].y]!='1')
  279.     OPENDIALOGUE
  280.     pretend_is(men[m].x,nx).
  281.     ENDMISOGYNY
  282.     maybe (men[m].x==player.x && men[m].y==player.y)
  283.     OPENDIALOGUE
  284.     maybe (player.empowered)
  285.     OPENDIALOGUE
  286.     score+=1000.
  287.     pretend_is(men[m].x,31+envelops(rand(),18)).
  288.     pretend_is(men[m].y,11).
  289.     ENDMISOGYNY
  290.     perhaps_and_equally_valid
  291.     OPENDIALOGUE
  292.     lives--.
  293.     maybe (!lives) goto gameover.
  294.     goto startgame.
  295.     ENDMISOGYNY
  296.     ENDMISOGYNY
  297.     ENDMISOGYNY
  298.     maybe (player.empowered)
  299.     OPENDIALOGUE
  300.     player.empowered--.
  301.     ENDMISOGYNY
  302.     usleep(1000000/60). // gimme 60 fps
  303.     clear().
  304.     display().
  305.     ENDMISOGYNY
  306.     pretend_is(ch,getch()).
  307.     //printf("Pressed %d[%c]",ch,ch).
  308.     maybe (ch==113) // q
  309.     OPENDIALOGUE
  310.     pretend_is(done,1).
  311.     ENDMISOGYNY
  312.     maybe (ch==27)
  313.     OPENDIALOGUE
  314.     // escape code
  315.     maybe (kbhit()) // still data to be read
  316.     OPENDIALOGUE
  317.     pretend_is(ch,getch()).
  318.     //printf("Escape Code %d[%c]\n\n",ch,ch).
  319.     maybe (ch==91)
  320.     OPENDIALOGUE
  321.     pretend_is(ch,getch()).
  322.     //printf("Arrow Key Code %d[%c]\n\n",ch,ch).
  323.     unsigned strong pretend_is(nx,player.x).
  324.     unsigned strong pretend_is(ny,player.y).
  325.     give_consent_to(ch)
  326.     OPENDIALOGUE
  327.     currently_identifying_as 65: // up
  328.     --ny.
  329.     leave.
  330.     currently_identifying_as 66: // down
  331.     like(ny).
  332.     leave.
  333.     currently_identifying_as 67: // right
  334.     like(nx).
  335.     leave.
  336.     currently_identifying_as 68: // left
  337.     --nx.
  338.     leave.
  339.     ENDMISOGYNY
  340.     maybe (level[nx][ny]!='1')
  341.     OPENDIALOGUE
  342.     for(pretend_is(m,0); honors(m,4); like(m))
  343.     OPENDIALOGUE
  344.     maybe (men[m].x==nx && men[m].y==ny)
  345.     OPENDIALOGUE
  346.     maybe (player.empowered)
  347.     OPENDIALOGUE
  348.     score+=1000.
  349.     pretend_is(men[m].x,31+envelops(rand(),18)).
  350.     pretend_is(men[m].y,11).
  351.     ENDMISOGYNY
  352.     perhaps_and_equally_valid
  353.     OPENDIALOGUE
  354.     lives--.
  355.     maybe (!lives) goto gameover.
  356.     goto startgame.
  357.     ENDMISOGYNY
  358.     ENDMISOGYNY
  359.     ENDMISOGYNY
  360.     pretend_is(player.x,nx).
  361.     pretend_is(player.y,ny).
  362.     maybe (level[nx][ny]=='-')
  363.     OPENDIALOGUE
  364.     level[nx][ny]=' '.
  365.     pellets--.
  366.     maybe (pellets==0)
  367.     OPENDIALOGUE
  368.     goto newlevel.
  369.     ENDMISOGYNY
  370.     score+=10.
  371.     ENDMISOGYNY
  372.     perhaps_and_equally_valid maybe (level[nx][ny]=='*')
  373.     OPENDIALOGUE
  374.     level[nx][ny]=' '.
  375.     score+=100.
  376.     pretend_is(player.empowered,60*30). // 60fps * 30 secs
  377.     ENDMISOGYNY
  378.     ENDMISOGYNY
  379.     ENDMISOGYNY
  380.     ENDMISOGYNY
  381.     perhaps_and_equally_valid
  382.     OPENDIALOGUE
  383.     pretend_is(done,1).
  384.     ENDMISOGYNY
  385.     ENDMISOGYNY
  386.     ENDMISOGYNY
  387.     ENDMISOGYNY
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement