一个用 C 语言写的迷你版 2048 游戏,只有 500个字符

1小时开发2048,原来游戏如此简单 1小时开发2048,原来游戏如此简单材料准备1. 开发环境准备2. 代码基础准备3. 涉及到的样式说明正式编码1. 页面基础框架编写2.样式编写3. 监听键盘事件4. 编写算法逻辑4.1 通过数组来呈现每个块4.2 初步实现位移和合并4.3 实现向上合并(第一种算法)4.4 实现向下合并(第二种算法)4.5 实现向左向右合并(第三种算法)5. 生成随机块 本系列教程,想通过一些实际案例,带领大家学习编程。 在学习本课程之前,需要有两个准备,首先,您需要有一点点的编程基础,比如什么是变量、条件判断、循环等。其 阅读详情

Jay Chan 用 C 语言写的一个迷你版 2048 游戏,只有 487 个字符。来围观吧

M[16],X=16,W,k;main(){T(system("stty cbreak")
);puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i
,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M
[w(d,i,j++)],W|=P>>11,l*P&&(f?M[w(d,i,k)]=l<<
(l==P):0,k++),l=l?P?l-P?P:0:l:P:(f?M[w(d,i,k)
]=l:0,++k,W|=2*!l,l=0);}w(d,i,j){return d?w(d
-1,j,3-i):4*i+j;}T(i){for(i=X+rand()%X;M[i%X]
*i;i--);i?M[i%X]=2<<rand()%2:0;for(W=i=0;i<4;
)s(0,i++);for(i=X,puts("\e[2J\e[H");i--;i%4||
puts(""))printf(M[i]?"%4d|":"    |",M[i]);W-2
||read(0,&k,3)|T(s (1,K[(k>>X)%4]));}

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

#define GRID_LEN 16

int M[GRID_LEN];
int X = GRID_LEN;
int W;
int k;
int K[] = { 2, 3, 1 };


int w (int d, int i, int j)
{
  if (d <= 0) {
    return 4 * i + j;
  }

  return w (d - 1, j, 3 - i);
}

void s (int f, int d)
{
  int i = 4, j, l, P;

  for (; i--;) {
    j = k = l = 0;

    for (; k < 4;) {
      if (j < 4) {
        P = M[w (d, i, j++)];
        W |= P >> 11;
        l *P && (f ? M[w (d, i, k)] = l << (l == P) : 0, k++);
        l = l ? (P ? (l - P ? P : 0) : l) : P;
      }
      else {
        f ? M[w (d, i, k)] = l : 0;
        ++k;
        W |= 2 * !l;
        l = 0;
      }
    }
  }
}

void T ()
{
  int i = X + rand () % X;

  for (; M[i % X] * i; i--);

  i ? M[i % X] = 2 << rand () % 2 : 0;
  W = i = 0;

  for (; i < 4; i++) {
    s (0, i);
  }

  // Prints the tiles onto the terminal
  i = X;
  puts ("\e[2J\e[H");

  for (; i--;) {
    if (M[i]) {
      printf ("%4d|", M[i]);
    } else {
      printf ("%s", "    |");
    }

    // every 4th cell is followed by a line-break
    if (0 == (i & 3)) {
      putchar ('\n');
    }
  }

  // read input from keyboard
  if (!(W - 2)) {
    read (0, &k, 3);
    s (1, K[(k >> X) % 4]);
    T ();
  }
}

int main (void)
{
  // Uses stty to clear the screen in preparation for the game
  //system ("stty cbreak");

  /* Intializes random number generator */
  srand ((unsigned) time (NULL));

  T ();

  // Game has finished by this point
  // If win, display "WIN". Otherwise, display "LOSE".
  puts (W & 1 ? "WIN" : "LOSE");

  return 0;
}


c+ege图形库小游戏吃豆子 c语言+ege图形库 立即下载

相关推荐

C语言实现的各种小游戏(有赠品黑客渗透pdf一本)

有一个大型一点的农场游戏和7个中型规模的游戏和一个比较小的应用都是用c语言开发的,里面是有使用说明的。

开源项目 | 700多字节代码的一个小游戏

关注、星标公众号,不错过精彩内容素材来源:网络编辑整理:strongerHuang今天分享一个有趣的开源项目:基于ATtiny10(MCU),代码量只有700多字节的一个小游戏 RunT...

strongerHuang 705

推箱子EGE游戏

简单基础,EGE推箱子游戏代码,用C语言敲的,很基础。

c语言编写的2048游戏代码,大家可以参考一下这些

2048_launcher.c #include #include #include void main() { printf("正在启动中,请稍后!\n"); Sleep(1000); system("bin\\Version\\games\\0.1\\0.1.exe"); }补充:0.1.c #include #include #include #include #define WI

陈刚编程心得与知识集 3万+

c++ ege库的数据包

是c++开发的一种库,适合进行图形界面的开发,在vs2015版本上使用是完全没有问题的,这个文件的出色之处在于,这个完美兼容北京邮电大学本科阶段c++课程的实验要求。使用起来非常方便

C语言马里奥游戏

用C语言实现的简单马里奥游戏,内含源码与素材。游戏主体与马里奥相似。

2048的c语言实现

大一时学c语言写的,写的不好但当时感觉还行。。 环境运行 vc6.0 ,cpp文件。 基本上是c写的,但是改变字体颜色,在控制台移动光标等等好像不是c中的。 #include #include #include #include #include #define x0 26 #define y0 1 HANDLE hOutput=GetStdHandle

yanweibujian的博客 2688

c语言小游戏 雷霆战机(ege图形库实现版)

源代码以及exe文件。 c语言 雷霆战机 vc成功运行,有不添加ege图形库实现的版本,请去我的其他资源寻找。(vc++6.0欲调试需安装ege图形库)

Python实现2048小游戏

2048小游戏也算是一款好玩的益智休闲小游戏,下面本博主用 python 语言将该游戏复现,感兴趣的小伙伴点击 关注 哦! 同时博主还用 java 语言复现了该游戏,可点击以下链接浏览博主的另一篇文章:JAVA实现2048小游戏! 目录 一、效果 二、教程 1、文件结构 2、configs.py 3、main.py 4、Game2048.py 三、代码 1、configs.py 2、main.py 3、Game2048.py 一、效果 2048小游戏是一款比较流行的数字游戏,游.

D77的博客 9189

基于ege图形库的C时钟程序 附ege图形库

一个基于ege图形库的图形时钟程序,在VS2010下调试,能显示表盘和动态指针,有闹钟功能,可播放mp3音乐。

手把手教你用LcmSim+TakeDotLib打造完美LCD显示效果(附12x12汉字配置模板)

本文详细介绍了如何使用LcmSim模拟器与TakeDotLib标准字库工具优化LCD显示效果,包括字体选择、字库生成和实体设备验证。通过12x12汉字与8x16 ASCII的黄金比例配置,帮助开发者解决嵌入式开发中的显示难题,提升用户体验。附赠12x12汉字配置模板,可直接用于项目。

weixin_29205061的博客 135

C 语言小游戏 - 2048

**/#include#include#include#include#include#include#include#include#includeif (!for (x=0;x0) {for (x=0;x ");for (i=0;i ");for (i=0;i。

2301_77019544的博客 1013

OneNet平台MQTT连接避坑指南:C语言Token计算实战(附完整代码)

本文详细解析了OneNet平台MQTT连接中的Token计算机制,提供了C语言实现的完整代码和实战指南。通过HMAC算法和Base64编码,开发者可以高效生成安全凭证,避免常见连接问题,适用于物联网设备开发。

weixin_29193359的博客 459

2048游戏c语言linux简易代码,2048小游戏C语言实现代码

本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下大一时学c语言写的,写的不好但当时感觉还行。环境运行 vc6.0 ,cpp文件。基本上是c写的,但是改变字体颜色,在控制台移动光标等等好像不是c中的。代码:#include#include#include#include#include#define x0 26#define y0 1HANDLE hOutput=Get...

weixin_35970228的博客 801

RK3568嵌入式Linux多屏显示开发指南

摘要:本篇RK3568嵌入式Linux多屏显示开发指南详细介绍了基于Qt应用层的实现方案。文章首先概述了技术架构,说明从Qt应用到硬件显示的完整流程。然后提供了两种实现方案:推荐使用Qt内置多屏支持方案,包含完整的C++代码示例和配置文件说明;对于需要精细控制的场景,给出了基于libdrm API的底层实现方案。最后重点讨论了屏幕旋转处理和多屏协同工作模式的关键技术要点,包括扩展桌面、镜像模式等实现方法。

froxy的专栏 1570

Argoverse轨迹预测实战:从数据加载到地图API应用全解析

本文详细解析了Argoverse数据集在轨迹预测中的应用,从数据加载到地图API的实战技巧全涵盖。通过具体代码示例展示如何高效处理轨迹数据、实现可视化及基础预测模型,帮助开发者快速掌握自动驾驶轨迹预测的核心技术。特别介绍了Argoverse地图API的深度应用和性能优化经验。

weixin_29182481的博客 240

【C++/C】2048小游戏实验报告及心得

2048小游戏代码及总结

qq_74066630的博客 8744

实战指南:轻松破解DataDome滑块验证码的关键步骤

本文详细介绍了破解DataDome滑块验证码的关键步骤,包括理解其工作原理、准备工作、参数获取与配置、完整破解流程及API调用。通过使用Capsolver服务和模拟真实用户行为,帮助开发者有效绕过这一反机器人机制,同时强调了法律与道德考量。

weixin_30415113的博客 478

一个用 C 语言写的迷你版 2048 游戏,仅仅有 500个字符

Jay Chan 用 C 语言写的一个迷你版 2048 游戏,仅仅有 487 个字符。来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak") );puts(W&amp;1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i ,j,l,P){for(i=4;i--;)for(j=k=l=0;k&lt;4;)j&lt;4...

weixin_34218579的博客 87

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5844

YOLOv11涨点改进 | 全网独家下采样改进、细节涨点篇 | TGRS 2025 | 引入PWD参数化小波下采样模块,减少下采样过程中小目标的关键细节丢失,即插即用,助力高效涨点发论文

本文提出了一种改进YOLOv11小目标检测性能的参数化小波下采样(PWD)模块。PWD通过小波变换保留目标细节信息,增强频率域特征表达,有效解决了传统下采样导致的小目标信息丢失问题。该模块采用双分支设计,结合自适应频率选择和空间补偿机制,在红外图像和低光场景中表现出更强的抗干扰能力。实验表明,PWD能显著提升YOLOv11对弱纹理和低对比度目标的检测精度,同时保持计算效率。文章详细介绍了PWD的结构原理、实现代码及在YOLOv11中的集成方法,为小目标检测提供了有效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 232

C语言 2048游戏项目 EasyX图形库

一定要先setbkcolor (颜色);//设置背景颜色(之后面记得运行清屏)注意:一定要用cpp后缀不然EasyX无法正常使用。还有文件路径当前文件路径要用“./XXX.png”然后再cleardevice();用于菜单界面的图片显示和游戏背景音乐和成绩储存。将需要的图片、声音、文本放入文件夹内。囊括了图片、按键、鼠标、音乐、弹窗。具体我推荐按照以下链接来。

2303_81879249的博客 1050

Electron - Electron failed to install correctly, please delete node_modules/electron and try install

Electron安装失败:Electron failed to install correctly, please delete node_modules/electron and try installing again,electron安装报错:Electron failed to install correctly...解决方案,Electron 未能正确安装,请删除 node_modules/electron,然后再次尝试安装,如何解决这个问题,手把手教你解决,在yarn dev时报错,electr

🏆 前端领域优质创作者 4365

c语言小游戏

C 语言小游戏 - 2048 每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方乱数出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。不断的叠加最终拼凑出2048这个数字就算成功。控制方式字母WASD分别为上下左右Q为退出。 /* Name : 2048.c Author : Maurits van der Schee Description : Console version of the game “2048” fo

qq_61293875的博客 3477

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

“2048”~~~~益智小游戏的python实现

2048是一款非常有趣的益智游戏,是需要你控制方向键来控制所有方块向一个方向移动,两个相同数字的方块撞在一起后会合并成为他们的和,每次移动操作后会在空白的方格处随机生成一个2或者4,最后你只要得到一个“2048”的方块就胜利了。如果16个格子全满了并且相邻的格子都没有相同的数字可以消除的话,那么恭喜你本局游戏结束了。 2048的作者GabrieleCirulli最初把把它以开源的形式发布在GitHub上,后来意外地风靡全球,各种版本衍生层出不穷。顺表吐槽一句:这位作者也仅仅只有20...

Huamanlou0907的博客 1967

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 字符串反转
下一篇: 字符串最后一个单词的长度
52coder
博客等级 码龄17年 87粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值