iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么用C语言实现2048游戏
  • 861
分享到

怎么用C语言实现2048游戏

2023-06-20 18:06:26 861人浏览 八月长安
摘要

本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,

本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!

本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,具体内容如下

我遇到的几个问题:

问题1:如何显示?

system("clear");//清屏

每次发生变化就清屏一次,再把内容打印出来

问题2:怎么用键盘控制?

w,s,a,d-->上下左右

system("stty -icanon");//关闭缓冲区,输入字符无需回车直接接受

问题3:随机位置?

用srand()与rand()产生随机数(x,y),再判断位置(x,y)是否为空格,不是空格就继续产生随机位置;若该位置为空格,则随机赋值2或4.

怎么用C语言实现2048游戏

代码:

#include <stdio.h>#include <stdlib.h>#include <time.h>  int a[4][4];int i,j,k; int move_up(){ int f=0;//有移动过,则f=1,没移动过则为0 for(j=0;j<4;j++) {  for(i=1;i<4;i++)  {   if(a[i][j]!=0)//找到不是0的数   {    for(k=0;k<i;k++)    {     if(a[k][j]==0)//其上的第一个0     {      a[k][j]=a[i][j];      a[i][j]=0;      f=1;      break;     }    }   }  } } return f;} int move_down(){ int f=0; for(j=0;j<4;j++) {  for(i=2;i>=0;i--)  {   if(a[i][j]!=0)   {    for(k=3;k>i;k--)    {     if(a[k][j]==0)     {      a[k][j]=a[i][j];      a[i][j]=0;      f=1;      break;     }    }   }  } } return f;} int move_left(){ int f=0; for(i=0;i<4;i++) {  for(j=1;j<4;j++)  {   if(a[i][j]!=0)   {    for(k=0;k<j;k++)    {     if(a[i][k]==0)     {      a[i][k]=a[i][j];      a[i][j]=0;      f=1;      break;     }    }   }  } } return f;} int move_right(){ int f=0; for(i=0;i<4;i++) {  for(j=2;j>=0;j--)  {   if(a[i][j]!=0)   {    for(k=3;k>j;k--)    {     if(a[i][k]==0)     {      a[i][k]=a[i][j];      a[i][j]=0;      f=1;      break;     }    }   }  } } return f;}  int up(){ int f=0;//合并过,f=1,没和并过则为0 //移动 int f1=move_up();//移动过f1=1 //合并 for(j=0;j<4;j++) {  for(i=0;i<3;i++)  {   if(a[i][j]==a[i+1][j]&&a[i][j]!=0)   {    a[i][j]=2*a[i][j];    a[i+1][j]=0;    f=1;   }  } } if(f==1)//若合并后可能产生的空位,再移动  move_up(); return (f||f1);//移动过或合并过,则返回1;否则返回0} int down(){ int f=0; //移动 int f1=move_down(); //合并 for(j=0;j<4;j++) {  for(i=3;i>0;i--)  {   if(a[i][j]==a[i-1][j]&&a[i][j]!=0)   {    a[i][j]=2*a[i][j];    a[i-1][j]=0;    f=1;   }  } } if(f==1)//若合并后产生的空位,  move_down(); return (f||f1);} int left(){ int f=0; //移动 int f1=move_left(); //合并 for(i=0;i<4;i++) {  for(j=0;j<3;j++)  {   if(a[i][j]==a[i][j+1]&&a[i][j]!=0)   {    a[i][j]=2*a[i][j];    a[i][j+1]=0;    f=1;   }  } } if(f==1)//若合并后产生的空位,  move_left(); return (f||f1);} int right(){ int f=0; //移动 int f1=move_right(); //合并 for(i=3;i>=0;i--) {  for(j=3;j>0;j--)  {   if(a[i][j]==a[i][j-1]&&a[i][j]!=0)   {    a[i][j]=2*a[i][j];    a[i][j-1]=0;    f=1;   }  } } if(f==1)//若合并后产生的空位,  move_right(); return (f||f1);}  int ran()//随机数{ int z[8]={2,2,2,2,2,2,2,4};//出现2的概率比出现4的概率大 srand(time(NULL));lb: i=rand()%4; j=rand()%4; //随机位置的值为0,则随机赋值2或4;否则继续找随机位置 if(a[i][j]==0)  a[i][j]=z[rand()%8]; else  Goto lb;}  int fail()//失败{ int count=0; for(i=0;i<4;i++) {  for(j=0;j<3;j++)  {   if(a[i][j]==a[i][j+1])//左右相邻相等--》还没输   {    return 0;   }  } } for(i=0;i<3;i++) {  for(j=0;j<4;j++)  {   if(a[i][j]==a[i+1][j])//上下相邻相等--》还没输   {    return 0;   }  } } for(i=0;i<4;i++) {  for(j=0;j<4;j++)  {   if(a[i][j]==0)//统计空格的个数   {    count++;   }  } } if(count==0)//没有空格 {  printf("\n很遗憾!你离成功就差一点了!\n");  return 1; } return 0;}   int main(){ char n;//w,s,a,d-->上下左右 system("stty -icanon");//关闭缓冲区,输入字符无需回车直接接受 ran(); while(1) {  //产生随机数  ran();  //显示  system("clear");//清屏  printf("\n---------------------------------\n");  for(i=0;i<4;i++)  {   printf("|");   for(j=0;j<4;j++)   {    if(a[i][j]==0)     printf("       |");    else     printf("%5d  |",a[i][j]);   }   printf("\n---------------------------------\n");  }  printf("\n\nw,s,a,d-->上下左右;ESC退出游戏!\n");   lab:   n=getchar();  switch(n)  {   case 'w': //上    if(0==up())//若既不移动又不合并    {     if(1==fail())//判断是不是游戏失败      return -1;     else      goto lab;    }    break;   case 's': //下    if(0==down())    {     if(1==fail())      return -1;     else      goto lab;    }    break;   case 'a': //左    if(0==left())    {     if(1==fail())      return -1;     else      goto lab;    }    break;   case 'd': //右    if(0==right())    {     if(1==fail())      return -1;     else      goto lab;    }    break;   case 27: //ESC    printf("\n退出游戏!\n");    return 0;   default:    goto lab;  }  //判断是否胜利  for(i=0;i<4;i++)  {   for(j=0;j<4;j++)   {    if(a[i][j]==2048)//数值为2048,游戏胜利    {     printf("\n恭喜你!游戏胜利!\n");     return 1;//退出    }    }  } }  return 0;}

到此,相信大家对“怎么用C语言实现2048游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用C语言实现2048游戏

本文链接: https://www.lsjlt.com/news/298955.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用C语言实现2048游戏
    本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,...
    99+
    2023-06-20
  • 用C语言实现2048游戏
    本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,具体内容如下 我遇到的几个问题: 问题1:如何显示? system("clear");//清屏 每次发生变化就清屏...
    99+
    2024-04-02
  • 怎么用C语言完整实现2048游戏
    这篇文章主要介绍怎么用C语言完整实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、游戏思路程序开始时出现菜单,让玩家选择开始游戏或者退出游戏。玩家选择开始游戏后,出现棋盘,通过方向键选择移动的方向。移...
    99+
    2023-06-25
  • 用C语言完整实现2048游戏
    目录前言一、游戏思路二、游戏框架 1.菜单界面2.游戏主体1.初始化界面:2.随机生成初始数字3.实现移动4.增加新数字5.判定胜负6.游戏函数三、游戏运行四、所有代码总结 前言 游...
    99+
    2024-04-02
  • 基于C语言实现2048游戏
    本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h>...
    99+
    2024-04-02
  • R语言如何实现2048游戏
    小编给大家分享一下R语言如何实现2048游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个...
    99+
    2023-06-14
  • java怎么实现2048游戏
    这篇文章主要介绍java怎么实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例讲述了java实现的2048游戏。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:package&nb...
    99+
    2023-05-30
  • 怎么用Python实现2048小游戏
    这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P...
    99+
    2023-06-15
  • R语言写2048游戏实例讲解
    2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个翻倍的数字,初始数字由 2 或者 4 构成,直到游戏界面全部被填满,游戏结束。 编程时并未查看原作者代码,不喜...
    99+
    2024-04-02
  • C语言怎么实现飞机游戏
    这篇“C语言怎么实现飞机游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么实现飞机游戏”文章吧。scanf 控制飞...
    99+
    2023-06-30
  • C语言怎么实现数独游戏
    本文小编为大家详细介绍“C语言怎么实现数独游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么实现数独游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。目标写一个数独游戏,有以下功能:能随机产生题目并给...
    99+
    2023-06-29
  • 怎么用C语言实现扫雷小游戏
    这篇文章主要讲解了“怎么用C语言实现扫雷小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C语言实现扫雷小游戏”吧!具体内容如下经典扫雷游戏规则:当玩家点击游戏区域,该处周围的八个位...
    99+
    2023-06-25
  • 怎么用c语言实现三子棋游戏
    这篇文章给大家分享的是有关怎么用c语言实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、...
    99+
    2023-06-14
  • 怎么用C语言实现五子棋游戏
    这篇文章主要介绍“怎么用C语言实现五子棋游戏”,在日常操作中,相信很多人在怎么用C语言实现五子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C语言实现五子棋游戏”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • 用C语言实现排雷游戏
    目录设计简单的游戏界面菜单排雷过程相应的代码一级目录排雷游戏的缺陷与不足一级目录改进总结设计简单的游戏界面菜单 输入数字1,进入游戏; 输入数字0,退出游戏;输入其他数字,将显示...
    99+
    2024-04-02
  • 用C语言实现扫雷游戏
    用C语言实现扫雷游戏,因为代码会比较多,所以采用多文件的方式,使代码看起来更好。 一.main.c 在主调函数中首先要提供一个给用户选择的界面,在这里我们假定选择1为开始游戏,0为退...
    99+
    2024-04-02
  • Python怎么实现简单2048小游戏
    这篇文章主要介绍了Python怎么实现简单2048小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话...
    99+
    2023-06-15
  • 小程序怎么实现2048小游戏
    这篇文章主要介绍“小程序怎么实现2048小游戏”,在日常操作中,相信很多人在小程序怎么实现2048小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么实现2048小游戏”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • 怎样用C语言实现纸牌游戏
    今天就跟大家聊聊有关怎样用C语言实现纸牌游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 基本要求一副没有花牌(J、Q、K、A、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人...
    99+
    2023-06-22
  • C语言版扫雷游戏怎么实现
    这篇文章主要介绍C语言版扫雷游戏怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作