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 16int 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 语言写的迷你版 2048 游戏,仅仅有 500个字符相关推荐

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

    Jay Chan 用 C 语言写的一个迷你版 2048 游戏,只有 487 个字符.来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak" ...

  2. 横版java_Project4 自己用java写的横版格斗游戏 功能还不是很复杂 可以作为参考~ Other Games 其他 238万源代码下载- www.pudn.com...

    文件名称: Project4下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 5963 KB 上传时间: 2013-07-17 下载次数: 4 提 供 者: lyk ...

  3. 用c语言写简单的回合制游戏

    用c语言写简单的回合制游戏 #include <stdio.h> #include <stdlib.h> #include <time.h> #include &l ...

  4. Cocos2d-x 3.x版2048游戏开发

    Cocos2d-x 3.x版2048游戏开发 本篇博客给大家介绍如何快速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程,从本篇博客你将可以学习到以下内容: 这里注明一下,本教程来自极客学 ...

  5. 手写实现迷你版 Tomcat

      Minicat要做的事情:作为⼀个服务器软件提供服务的,也即我们可以通过浏览器客户端发送http请求,Minicat可以接收到请求进行处理,处理之后的结果可以返回浏览器客户端. 整体思路: (1) ...

  6. 是男人就下100层【第五层】——换肤版2048游戏

    ---------------------------------------------------------------------------------------------------- ...

  7. 2048游戏代码python_200 行代码实现简易版 2048 游戏 (python)

    当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言. 好了,说了那么说没用的话,现在正式开始 创建 ...

  8. Web版2048游戏制作

    写在前面 工作之余参与了<慕课网2048游戏制作>的学习视频,视频断断续续看完了,游戏也制作成功了.因为其他的事情也没来的及总结,一拖时间也就过去了,整理磁盘的时候发现了2048源码,思考 ...

  9. python实现2048编程_200 行代码实现简易版 2048 游戏 (python)

    当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言. 好了,说了那么说没用的话,现在正式开始 创建 ...

最新文章

  1. Android报错:java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;如何解决
  2. 解决全网90%以上的日期格式转换、日期序列等骚操作问题
  3. Mustache.js和Handlebars.js有什么区别?
  4. ARM Cortex-M3相比于ARM其他系列微控制器的优势和特点
  5. 【安卓开发 】Android初级开发(九)Android中封装View提供接口供点击事件回调的方法及使用
  6. LeetCode 面试题 链表中倒数第K个点
  7. Java核心篇之JVM--day3
  8. Python测试开发django5.urls.py参数name与a标签的引用
  9. cocos2dx热更新tmx的一个坑
  10. 第十五章:交互式界面(十一)
  11. pom.xml中添加oracle数据库驱动包报错: Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  12. Windows安装zookeeper和kafka
  13. 如何优雅地制作精排 ePub —— 个人电子书制作规范及基本样式表
  14. centos服务器搭建代理
  15. 微信小程序引入字体图标 1
  16. Unity Predefined assemblies/assembly definition files
  17. 微信公众号网页授权域名证书验证位置
  18. 【神经网络参数初始化方法】
  19. selenium-python自动化测试框架详解
  20. python高校学生社团管理系统django项目源码介绍

热门文章

  1. 基于html篮球网页游戏,基于html5和jquery的篮球跳动游戏
  2. C语言编程,华氏温度转化为摄氏温度
  3. springboot毕设项目人机工程与交互体验实验室网站zo77m(java+VUE+Mybatis+Maven+Mysql)
  4. xls文件的上传和下载
  5. 设计模式之策略+工厂实现支付功能代码优化
  6. java毕业设计我爱短视频管理系统mybatis+源码+调试部署+系统+数据库+lw
  7. 刘备学Android目录
  8. cad批量打印快捷键_原来CAD还能这么打印?批量打印了解一下?1分钟打印100张...
  9. fortran与java的区别_fortran与c或java比较
  10. 强制root工具kingoroot