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

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;
}

时间: 2024-08-05 19:33:18

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

Web版2048游戏制作

写在前面 工作之余参与了<慕课网2048游戏制作>的学习视频,视频断断续续看完了,游戏也制作成功了.因为其他的事情也没来的及总结,一拖时间也就过去了,整理磁盘的时候发现了2048源码,思考一下还是将之push到github上了(后面贴出),也顺便写篇总结,回顾一下,同时也谢谢liuyubobobo老师的授课. 不过源码在手,不运行下玩玩,怎么说的过去呢,哈哈!下面是游戏截图. 大图是PC端运行的效果,小图则是在iphone5s上的运行效果(Chrome浏览器debug,具体如何做参考文章:ht

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

今天给大家介绍如何快速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程,从中你将可以学习到以下内容: 2048游戏的逻辑 Cocos2d-x中上下左右手势的识别 游戏中卡片类的创建 添加卡片到游戏中 游戏中的逻辑实现 游戏中随机卡片的生成 游戏结束判断 游戏分数的添加 游戏美化 笔者的开发环境:    Cocos2d-x 3.1.1(开发引擎)    Visual Studio 2012(Win32)    Xcode 5.1(Mac系统下) 这里注明一下,本教程来自极客学院,小巫对

python版2048游戏

闲来无聊,电脑上的游戏也被删了,自己动手写了个2048,目前只是实现了基本的游戏功能,代码还比较弱: 百度盘:http://pan.baidu.com/s/1eQpJbgQ gui代码如下: #!/usr/bin/python # -*- coding: utf-8 -*- #导入tkinter import Tkinter import game2048_Class import sys def refreshGui(): n = len(game.nlist) for i in range(

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

今天看到一个网站不知道是用什么语言写的

今天看到一个网站不知道是用什么语言写的网站(www.kufangwuyou.com)不知道这是怎么回事一直费解,想换成div+cdd的!

直播的本质(创业者应该要从商业模式的右边开始思考,你为用户创造了什么价值?找客户并不难,但要想办法让客户不离不弃;PC端功能的丰富很重要,因为手机版通常只是一个迷你版)

我想稍微给直播这件事浇点冷水. 的确,直播现在越来越火,YouTube凭着良好的基础建设平台前段时间也做起了直播,Facebook Live最近也加入了变脸.预定直播时间和双人录制的功能,更不用说国内的如火如荼:KTV在直播.电商行业在直播.金融行业在直播.不过想想以前的球赛.晚会也是直播,这并不稀奇.真正带来巨大改变的是移动端直播的兴起,让人具备了随时随地观看的可能,所以说关键是技术创新的整体“生产率提升”效应,而不是创新本身提高了“生产力”水平.我们对互联网连接一切这种文化所做的选择,结果却

如何判断一个网址是由哪种语言写的

一般的情况看页面的后缀名 Server Side Includes 技术,拓展名为.shtml或.html或.htm PHP技术,拓展名为.php JSP技术,拓展名为.jsp或.jsf(JSF技术是JSP技术的拓展) ASP.NET技术,拓展名为.aspx (x 代表extension) ASP技术,拓展名为.asp ColdFusion技术,拓展名为.cfc 好点的网站,一般用资源转向功能(就向JSP中web.xml定义的名字,把HOME转向到home.jsp,就隐藏了拓展名).或者用Apa

换一个视角看事务 - 用&quot;Java语言&quot;写&quot;作文&quot;

前段时间在抽工作之空余,更加系统和深入的重新学习Java的一些技术知识. 最近也试着申请了一个专栏,对前段时间的一些收获和知识点做一个系统性的归纳回顾和总结. 昨天也是刚刚写完了关于Java中的各种基础语言要素的总结,总觉得少了点什么. 对基础语言要素的理解和使用,实际上是很重要的. 俗话说,一切伟大的行动和思想,都源于一个微不足道的开始. 而对于一门语言来说,熟练的掌握对其基础语言要素的理解和使用,就是这个"微不足道的开始" 可以这样说,一门语言的基础语言要素,就等同于是一门武功的内

不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊

花10天时间用C语言做了个小站 http://tieba.yunxunmi.com/index.html 简称: 云贴吧 不好意思啊.我上周到今天不到10天时间.用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊 估计採集1000万贴,欢迎大家狠狠的来拍吧! 整站大小(网页+C ISAPI类库)不到1MB 容量大.速度快.不管什么贴,随便贴吧,就是量大.容量大.肚量大!