Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. int stickCount;
  2. char key,previouseKey,takenSticks;
  3.  
  4. void redraw(){
  5. int i;
  6. //выбираем красный цвет
  7. setcolor(2);
  8. //рисуем видимые палочки
  9. for(i = 0; i < stickCount; i++)
  10. line(22 + i * 6, 74, 22 + i * 6, 84);
  11. //выбираем серый цвет
  12. setcolor(11);
  13. //рисуем выброшенные
  14. for(i = stickCount; i < 15; i++)
  15. line(22 + i * 6, 74, 22 + i * 6, 84);
  16. //возвращаем белый цвет как основной
  17. setcolor(1);
  18. //ждем перерисовки экрана
  19. delayredraw();
  20. }
  21.  
  22. void playersMove(){
  23. //если код кнопки равен предыдущему, значит она еще не отпущена. Ждем
  24. while(key == previouseKey){
  25. key = getkey();
  26. }
  27. while(key != KEY_LEFT && key != KEY_DOWN && key != KEY_RIGHT){
  28. key = getkey();
  29. }
  30. if(key & KEY_LEFT){
  31. takenSticks = 1;
  32. }else if(key & KEY_DOWN){
  33. takenSticks = 2;
  34. }else{
  35. takenSticks = 3;
  36. }
  37. printf("%d, ", takenSticks);
  38. stickCount -= takenSticks;
  39. previouseKey = key;
  40. }
  41.  
  42. void computersMove(){
  43. if(stickCount % 4){
  44. //компьютер реализует выигрышную стратегию, если выпала возможность
  45. takenSticks = stickCount % 4;
  46. }else{
  47. //компьютер ждет возможности реализовать выигрышную стратегию
  48. takenSticks = 1 + random(1);
  49. }
  50. stickCount -= takenSticks;
  51. printf("%d, ", takenSticks);
  52. }
  53.  
  54. void game(){
  55. //инициализация
  56. stickCount = 15;
  57. clearscreen();
  58. //переводим каретку на восьмой символ нулевой строки
  59. gotoxy(8,0);
  60. puts("Баше");
  61. gotoxy(2,1);
  62. puts("Возьмите 1,2 или 3 палочки. Проигрывает тот, кому нечего брать. Управление:\n");
  63. //коды 27,25 и 26 соответствуют стрелкам
  64. printf(" %c 1 %c 2 %c 3", 27, 25, 26);
  65. gotoxy(0,12);
  66. redraw();
  67. while(1){
  68. playersMove();
  69. if(stickCount <= 0){
  70. gotoxy(3,8);
  71. puts("Вы выиграли");
  72. return;
  73. }
  74. redraw();
  75. computersMove();
  76. redraw();
  77. if(stickCount <= 0){
  78. gotoxy(3,8);
  79. puts("Компьютер выиграл");
  80. return;
  81. }
  82. }
  83. }
  84.  
  85. void main(){
  86. while(1){
  87. game();
  88. //ждем секунду
  89. settimer(1,1000);
  90. while(gettimer(1)){}
  91. while(getkey() == 0){}
  92. previouseKey = key;
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement