Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1259722
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: C/C++

2011-09-19 22:16:58

  1. #include
  2. #define N 8
  3. #define BLACK '*'
  4. #define RED '@'
  5. #define BG '.'
  6. void init(char *bg, int n, int color)
  7. {
  8. int i, j;
  9. for (i = 0; i < n; ++i)
  10. {
  11. for (j = 0; j < n; ++j)
  12. {
  13. bg[i * n + j] = color;
  14. }
  15. }
  16. }
  17. void show(char *bg, int n)
  18. {
  19. int i, j;
  20. for (i = 0; i < n; ++i)
  21. {
  22. for (j = 0; j < n; ++j)
  23. {
  24. printf("%c ", bg[i * n + j]);
  25. }
  26. printf("\n");
  27. }
  28. }
  29. int check_win(char *bg, int n, int *flag, int x, int y)
  30. {
  31. if (bg[y * n + x] != BG) //漏斗法:测试x,y不在规定的设置点上“.”
  32. {
  33. return 1;
  34. }
  35. bg[y * n + x] = (*flag == 1 ? BLACK : RED); //
  36. *flag = -(*flag);
  37. return 1;
  38. }
  39. int main(void)
  40. {
  41. char bg[N][N];
  42. int x, y;
  43. int flag; // -1 表示红方 1 表示黑方
  44. init((char *)bg, N, BG);
  45. flag = 1;
  46. while (1)
  47. {
  48. system("clear");
  49. show((char *)bg, N);
  50. printf("\n\n=====================\n");
  51. /*
  52. if (flag == 1)
  53. {
  54. printf("Black Input: ");
  55. }
  56. else
  57. {
  58. printf("Red Input: ");
  59. }
  60. */
  61. printf("%s Input: ", flag == 1 ? "Black" : "Red" ); //标志位flag
  62. scanf("%d%d", &x, &y);
  63. if (check_win((char *)bg, N, &flag, x, y) == 0)
  64. {
  65. break;
  66. }
  67. }
  68. return 0;
  69. }
    基本思路:就是向内存中写字符,读取字符进行比较; 如果有两个进程,对内存进行读写,需要标志位。
    如此简单的东西,其实涉及到对内存进行加锁
阅读(934) | 评论(1) | 转发(0) |
0

上一篇:IIC的笔记

下一篇:弹球程序

给主人留下些什么吧!~~

china_ssl2011-09-20 12:33:00

牛X啊,楼主v5