• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C/C++仿华容道小游戏

C/C++仿华容道小游戏

作者:__lurenjia__ 字体:[增加 减小] 来源:互联网 时间:2017-05-28

__lurenjia__ 通过本文主要向大家介绍了c c++ c#区别,c和c++的区别,c语言和c++有什么区别,c/c++,c语言与c++的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例介绍了C++模仿华容道小游戏实现代码,分享给大家供大家参考,具体内容如下

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
 
#define maxnum 16
#define colnum 4
 
bool numexists(int *numbers, int length, int num);
int getnumber(int **numbers, int randIndex, int *length);
int* initnumbers(void);
void swap(int **a, int **b);
 
int main(int argc, char *argv[])
{
  int *tempnumbers = initnumbers();
  int *randnumbers = initnumbers();
  int **numbers;
  numbers = malloc(maxnum * sizeof(int*));
  //bool a = numexists(numbers, 16, 3);
  //printf("a=%d\n", a);
 
  int length = maxnum;
  srand((unsigned)time(NULL));
  for (int i = 0; i < maxnum; i++)
  {
    int temp = getnumber(&tempnumbers, rand() % length, &length);
    randnumbers[i] = temp;
    numbers[temp] = &randnumbers[i];
    //printf("%d%c", temp, (i + 1) % colnum == 0?'\n':'\t');
  }
  if (tempnumbers != NULL)
    free(tempnumbers);
  while (true)
  {
    system("clear");
    for (int i = 0; i < maxnum; i++)
      printf("%d%c", randnumbers[i], (i + 1) % colnum == 0?'\n':'\t');
 
    printf("move number/ invalid num==exit: ");
    int i;
    if (!scanf("%d", &i))
    {
      printf("game over\n");
      break;
    }
    if (i >= maxnum || i <0)
    {
      printf("sorry, i can't find %d\n", i);
      break;
    }
    unsigned char sign = abs(numbers[i] - numbers[0]);
    switch (sign)
    {
      case 1:
      case 4: swap(&numbers[0], &numbers[i]); break; 
    }
 
  }
  if (numbers != NULL)
    free(numbers);
  if (randnumbers != NULL)
    free(randnumbers);
}
 
void swap(int **a, int **b)
{
  int *templocation = *a;
  int tempvalue = **a;
  **a = **b;
  **b = tempvalue;
  *a = *b;
  *b = templocation;
}
 
int* initnumbers(void)
{
  int *numbers = malloc(maxnum * sizeof(int));
  for (int i = 0; i < maxnum; i++)
    numbers[i] = i;
  return numbers;
}
 
int getnumber(int **numbers, int randIndex, int *length)
{
  int result = (*numbers)[randIndex];
  (*numbers)[randIndex] = (*numbers)[--(*length)];
  int *temp = realloc(*numbers, (*length) * sizeof(int));
  *numbers = temp;
  return result;
}
 
bool _numexists(int *numbers, int start, int end, int num)
{
  printf("start: %d, end: %d, num: %d\n", start, end, num);
  if (start == end)
    return numbers[start] == num;
  else
  {
    int middle = (start+end) / 2;
    if (numbers[middle] == num)
      return true;
    else if (numbers[middle] > num)
      return _numexists(numbers, start, middle-1, num);
    else
      return _numexists(numbers, middle+1, end, num);
  }
}
bool numexists(int *numbers, int length, int num)
{
  return _numexists(numbers, 0, length-1, num);  
}
</div>

希望本文对大家学习C++程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C/C++ 中堆和栈及静态数据区详解
  • C/C++中运算符的优先级、运算符的结合性详解
  • C/C++ 中sizeof('a')对比详细介绍
  • C/C++中的typedef和#define详解
  • C/C++中宏定义(#define)
  • C/C++函数参数传递机制详解及实例
  • C/C++ 公有继承、保护继承和私有继承的对比详解
  • C/C++静态类和this指针详解及实例代码
  • C/C++中提高查找速度的小技巧
  • C/C++ ip地址与int类型的转换实例详解

相关文章

  • 2017-05-28static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解
  • 2017-05-28用C语言模仿Python函数的一种简单实现方法
  • 2017-05-28C++调用Python基础功能实例详解
  • 2017-05-28C语言中一些将字符串转换为数字的函数小结
  • 2017-05-28进程间通信之深入消息队列的详解
  • 2017-05-28C语言二维数组的处理实例
  • 2017-05-28c++作用域运算符用法(全局变量和局部变量)
  • 2017-05-28最小生成树算法C语言代码实例
  • 2017-05-28使用C++制作简单的web服务器
  • 2017-05-28在C++中自定义宏的简单方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++编程中逗号运算符和条件运算符的使用方法讲解
    • VC实现获取本机MAC地址的方法
    • c++ STL set_difference set_intersection set_union 操作
    • 简单总结C++中指针常量与常量指针的区别
    • 解析取模运算% 和位与运算& 之间的关系详解
    • VC++中内存对齐实例教程
    • C++类中的static和const用法实例教程
    • C语言实现奇数阶魔方阵的方法
    • VC随机函数srand和rand用法
    • C++里最容易忽视却不能忽视的问题(必看)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有