经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言实现简单猜拳小游戏
来源:jb51  时间:2021/3/1 17:18:25  对本文有异议

C语言实现简单的一个猜拳小游戏,供大家参考,具体内容如下

全部代码

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<Windows.h>
  5. int pcinput; //电脑输入
  6. int userinput; //用户输入
  7. #define echo ">_ " //俺觉得好看
  8. char case_win(int left, int right);//判断哪边赢了;left是玩家,right是电脑
  9. int echoinput(int inputnum);//根据两个全局变量输出对应进行的操作
  10. int main() {
  11. printf("规则\n\n");
  12. puts("1.石头\n");
  13. puts("2.剪刀\n");
  14. puts("3.布 \n");
  15. printf("%s你的输入:", echo);
  16. scanf_s("%d", &userinput);
  17. printf("\n");
  18. if (echoinput(userinput) == 1) {
  19. Sleep(1000);
  20. system("cls");
  21. main();
  22. }
  23. else {
  24. printf("\n");
  25. printf("\n");
  26. printf("%s等待电脑结果.\0", echo);
  27. Sleep(500);
  28. printf(".");
  29. Sleep(500);
  30. printf(".\n");
  31. srand(time(NULL));
  32. pcinput = rand() % 3 + 1;
  33. printf("\n");
  34. echoinput(pcinput);
  35. printf("\n");
  36. printf("\n");
  37. if (case_win(userinput,pcinput) == 'L') {
  38. printf("玩家胜利");
  39. }
  40. else if(case_win(userinput,pcinput)=='R'){
  41. printf("电脑胜利");
  42. }
  43. else {
  44. printf("双方平局");
  45. }
  46. printf("\n");
  47. printf("\n");
  48. printf("--------------------");
  49. printf("\n");
  50. printf("\n");
  51. printf("三秒后继续...");
  52. Sleep(1000);
  53. printf("二秒后继续...");
  54. Sleep(1000);
  55. printf("一秒后继续...");
  56. Sleep(1000);
  57. system("cls");
  58. main();
  59. }
  60. return 0;
  61. }
  62. char case_win(int left, int right) {
  63. char reslut;
  64. /*
  65. *声明
  66. *石头->1
  67. *剪刀->2
  68. * _布->3
  69. */
  70. /*
  71. * 规则:
  72. * 石头->剪刀
  73. * 剪刀->布
  74. * 布->石头
  75. */
  76. /*判断,左边是玩家*/
  77. if (left == right) {
  78. reslut = 'P';
  79. }
  80. else {
  81. if (left == 1) {
  82. if (right == 2) {
  83. reslut = 'L';
  84. }
  85. else if (right == 3) {
  86. reslut = 'R';
  87. }
  88. }
  89. else if (left == 2) {
  90. if (right == 1) {
  91. reslut = 'R';
  92. }
  93. else if (right == 3) {
  94. reslut = 'L';
  95. }
  96. }
  97. else if (left == 3) {
  98. if (right == 1) {
  99. reslut = 'L';
  100. }
  101. else if (right == 2) {
  102. reslut = 'R';
  103. }
  104. }
  105. }
  106. return reslut;
  107. }
  108. int echoinput(int inputnum) {
  109. int reslut = 0;
  110. switch (inputnum) {
  111. case 1:
  112. printf("(石头)");
  113. break;
  114. case 2:
  115. printf("(剪刀)");
  116. break;
  117.  
  118. case 3:
  119. printf("(布)");
  120. break;
  121. default:
  122. printf("(输入有误)");
  123. reslut = 1;
  124. break;
  125. }
  126. return reslut;
  127. }

全局变量

  1. int pcinput; //电脑输入
  2. int userinput; //用户输入

函数定义

  1. char case_win(int left, int right);//判断哪边赢了;left是玩家,right是电脑
  2. int echoinput(int inputnum);//根据两个全局变量输出对应进行的操作

打印 规则和输入提示

  1. printf("规则\n\n");
  2. puts("1.石头\n");
  3. puts("2.剪刀\n");
  4. puts("3.布 \n");
  5. printf("%s你的输入:", echo);
  6. scanf_s("%d", &userinput);
  7. printf("\n");

Main方法中的主要逻辑

  1. int main() {
  2. printf("规则\n\n");
  3. puts("1.石头\n");
  4. puts("2.剪刀\n");
  5. puts("3.布 \n");
  6. printf("%s你的输入:", echo);
  7. scanf_s("%d", &userinput);
  8. printf("\n");
  9. if (echoinput(userinput) == 1) {
  10. Sleep(1000);
  11. system("cls");
  12. main();
  13. }
  14. else {
  15. printf("\n");
  16. printf("\n");
  17. printf("%s等待电脑结果.\0", echo);
  18. Sleep(500);
  19. printf(".");
  20. Sleep(500);
  21. printf(".\n");
  22. srand(time(NULL));
  23. pcinput = rand() % 3 + 1;
  24. printf("\n");
  25. echoinput(pcinput);
  26. printf("\n");
  27. printf("\n");
  28. if (case_win(userinput,pcinput) == 'L') {
  29. printf("玩家胜利");
  30. }
  31. else if(case_win(userinput,pcinput)=='R'){
  32. printf("电脑胜利");
  33. }
  34. else {
  35. printf("双方平局");
  36. }
  37. printf("\n");
  38. printf("\n");
  39. printf("--------------------");
  40. printf("\n");
  41. printf("\n");
  42. printf("三秒后继续...");
  43. Sleep(1000);
  44. printf("二秒后继续...");
  45. Sleep(1000);
  46. printf("一秒后继续...");
  47. Sleep(1000);
  48. system("cls");
  49. main();
  50. }
  51. return 0;
  52. }

函数实现-判断输入

当参数inputnum为1,2,3时,进行对应的打印操作,如果有误在Main方法中清屏递归

  1. int echoinput(int inputnum) {
  2. int reslut = 0;
  3. switch (inputnum) {
  4. case 1:
  5. printf("(石头)");
  6. break;
  7. case 2:
  8. printf("(剪刀)");
  9. break;
  10.  
  11. case 3:
  12. printf("(布)");
  13. break;
  14. default:
  15. printf("(输入有误)");
  16. reslut = 1;
  17. break;
  18. }
  19. return reslut;
  20. }

逻辑函数-判断输赢

  1. char case_win(int left, int right) {
  2. char reslut;
  3. /*
  4. *声明
  5. *石头->1
  6. *剪刀->2
  7. * _布->3
  8. */
  9. /*
  10. * 规则:
  11. * 石头->剪刀
  12. * 剪刀->布
  13. * 布->石头
  14. */
  15. /*判断,左边是玩家*/
  16. if (left == right) {
  17. reslut = 'P';
  18. }
  19. else {
  20. if (left == 1) {
  21. if (right == 2) {
  22. reslut = 'L';
  23. }
  24. else if (right == 3) {
  25. reslut = 'R';
  26. }
  27. }
  28. else if (left == 2) {
  29. if (right == 1) {
  30. reslut = 'R';
  31. }
  32. else if (right == 3) {
  33. reslut = 'L';
  34. }
  35. }
  36. else if (left == 3) {
  37. if (right == 1) {
  38. reslut = 'L';
  39. }
  40. else if (right == 2) {
  41. reslut = 'R';
  42. }
  43. }
  44. }
  45. return reslut;
  46. }

实现逻辑函数的返回值

  1. /*
  2. 当返回值reslut为'L'时,玩家胜利
  3. 当返回值reslut为'R'时,电脑胜利
  4. 否则双方平局
  5. */

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号