http://qs321.pair.com?node_id=76370

   1: #!/usr/bin/perl -w 
   2: #PID Roulette - Staring Bob the Cow; by Ben Jacobs 2001
   3: 
   4: use ExtUtils::testlib;
   5: use Curses;
   6: 
   7: srand( time() ^ ($$ + ($$ << 15)) );
   8: 
   9: $ps = sprintf('ps -Ao "%%p %%c" |');
  10: open BLAH, $ps; 
  11: 
  12: chomp(@file = <BLAH>);
  13: close(BLAH);
  14: 
  15: shift(@file);
  16: $doober = @file;
  17: 
  18: $randomnum = rand($doober);
  19: 
  20: foreach $blah (@file) {
  21:     $i++;
  22:     ($pids[$i], $names[$i]) = $blah =~ m/\s+(\d+)\s+(\w+)/g;
  23: }
  24: 
  25: $last = @pids;
  26: $randomnum = rand($last);
  27: 
  28: print "PID Roulette\n";
  29: print "Staring Bob the Cow\n";
  30: 
  31: initscr();
  32: noecho();
  33: cbreak();
  34: 
  35: $cow[0][0] = "          (__)";
  36: $cow[0][1] = "    ______( oo";
  37: $cow[0][2] = "---|       \\_|";
  38: $cow[0][3] = "   |       |";
  39: $cow[0][4] = "  / _______ \\";
  40: $cow[0][5] = " / /       \\ \\";
  41: 
  42: $cow[2][0] = "          (__)";
  43: $cow[2][1] = "    ______( oo";
  44: $cow[2][2] = "---|       \\_|";
  45: $cow[2][3] = "   |       |";
  46: $cow[2][4] = "   \\   __  /";
  47: $cow[2][5] = "    \\ \\ / /";
  48: 
  49: $cow[1][0] = "          (__)";
  50: $cow[1][1] = "    ______( oo";
  51: $cow[1][2] = "---|       \\_|";
  52: $cow[1][3] = "   |       |";
  53: $cow[1][4] = "  / ______ |";
  54: $cow[1][5] = " / /     / /";
  55: 
  56: $cow[3][0] = "          (__)";
  57: $cow[3][1] = "    ______( oo";
  58: $cow[3][2] = "---|       \\_|";
  59: $cow[3][3] = "   |       |";
  60: $cow[3][4] = "    \\  ____ \\";
  61: $cow[3][5] = "     \\ \\   \\ \\";
  62: 
  63: $cow[4][0] = "(__)";
  64: $cow[4][1] = "oo )______";
  65: $cow[4][2] = "|_/       |---";
  66: $cow[4][3] = "  |       |";
  67: $cow[4][4] = "  |  ___  |";
  68: $cow[4][5] = "  | |   | |";
  69: 
  70: $cow[5][0] = "(__)";
  71: $cow[5][1] = "oo )______";
  72: $cow[5][2] = "|_/       |---";
  73: $cow[5][3] = " |        |___";
  74: $cow[5][4] = " |  __________";
  75: $cow[5][5] = " | |";
  76: 
  77: $cow[6][0] = " | |    | |";
  78: $cow[6][1] = " |  ----  |";
  79: $cow[6][2] = " _        |";
  80: $cow[6][3] = "| \\       |---";
  81: $cow[6][4] = "** )------";
  82: $cow[6][5] = "(--)";
  83: 
  84: for ( $j = 0; $j < 16; $j+=2) {
  85:     for ( $x = 0; $x < 4; $x++) {
  86: 	clear();
  87: 	for ($i = 0; $i < 6; $i++) {
  88: 	    addstr($i + 2, $j, $cow[$x][$i]);
  89: 	}
  90: 	addstr(0, 0, "PID Roulette - Staring Bob the Cow");
  91: 	addstr(5, 30, $pids[$randomnum]);
  92: 	addstr(10, 0, "Bob is now going to kill \"$names[$randomnum]\", who's pid is \"$pids[$randomnum]\"");
  93: 	refresh();
  94: 	select(undef, undef, undef, .1);
  95:     }
  96: }
  97: select(undef, undef, undef, 1.5);
  98: clear();
  99: addstr(5, 30, $pids[$randomnum]);
 100: for ($i = 0; $i < 6; $i++) {
 101:     addstr($i + 2, 16, $cow[4][$i]);
 102: }
 103: addstr(0, 0, "PID Roulette - Staring Bob the Cow");
 104: addstr(10, 0, "Bob is now going to kill \"$names[$randomnum]\", who's pid is $pids[$randomnum]");
 105: refresh();
 106: select(undef, undef, undef, 1.0);
 107: clear();
 108: if (kill 9, $pids[$randomnum]) {
 109:     kill 9, $pids[$randomnum];
 110:     addstr(5, 30, "*POP*");
 111:     for ($i = 0; $i < 6; $i++) {
 112: 	addstr($i + 2, 16, $cow[5][$i]);
 113:     }
 114:     addstr(10, 0, "mwhahahahahahaha!");
 115: } else {
 116:     addstr(5, 30, $pids[$randomnum]);
 117:     for ($i = 0; $i < 6; $i++) {
 118: 	addstr($i + 2, 16, $cow[6][$i]);
 119:     }
 120:     addstr(10, 0, "Awwwwww ... Bob couldn't kill that PID. You should be playing as root. :-(");
 121: }      
 122: addstr(0, 0, "PID Roulette - Staring Bob the Cow");
 123: refresh();
 124: select(undef, undef, undef, 5);
 125: 
 126: endwin();
 127: 
 128: print "\nThanks for playing PID Roulette with Bob the Cow.\n\n";