一个用 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 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 terminali = 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-breakif (0 == (i & 3)) {putchar ('\n');}}// read input from keyboardif (!(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个字符相关推荐
- 一个用 C 语言写的迷你版 2048 游戏,仅仅有 500个字符
Jay Chan 用 C 语言写的一个迷你版 2048 游戏,仅仅有 487 个字符. 来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak&qu ...
- 横版java_Project4 自己用java写的横版格斗游戏
功能还不是很复杂
可以作为参考~ Other Games 其他 238万源代码下载- www.pudn.com...
文件名称: Project4下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 5963 KB 上传时间: 2013-07-17 下载次数: 4 提 供 者: lyk ...
- 用c语言写简单的回合制游戏
用c语言写简单的回合制游戏 #include <stdio.h> #include <stdlib.h> #include <time.h> #include &l ...
- Cocos2d-x 3.x版2048游戏开发
Cocos2d-x 3.x版2048游戏开发 本篇博客给大家介绍如何快速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程,从本篇博客你将可以学习到以下内容: 这里注明一下,本教程来自极客学 ...
- 手写实现迷你版 Tomcat
Minicat要做的事情:作为⼀个服务器软件提供服务的,也即我们可以通过浏览器客户端发送http请求,Minicat可以接收到请求进行处理,处理之后的结果可以返回浏览器客户端. 整体思路: (1) ...
- 是男人就下100层【第五层】——换肤版2048游戏
---------------------------------------------------------------------------------------------------- ...
- 2048游戏代码python_200 行代码实现简易版 2048 游戏 (python)
当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言. 好了,说了那么说没用的话,现在正式开始 创建 ...
- Web版2048游戏制作
写在前面 工作之余参与了<慕课网2048游戏制作>的学习视频,视频断断续续看完了,游戏也制作成功了.因为其他的事情也没来的及总结,一拖时间也就过去了,整理磁盘的时候发现了2048源码,思考 ...
- python实现2048编程_200 行代码实现简易版 2048 游戏 (python)
当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言. 好了,说了那么说没用的话,现在正式开始 创建 ...
最新文章
- C++ 经常使用类 string类
- 为什么优秀的程序员都成了无能的领导?
- JAVA实现合并两个排序的链表(《剑指offer》)
- matlab计算斜方差_Matlab求方差,均值,均方差,协方差的函数
- js 树形json转以叶子结点为基准的扁平结构
- python画海绵宝宝_《1,2,3到动物园》数数书,适合幼儿园小班宝宝亲子共读,从游戏中了解数字的概念...
- 螺旋方阵(Leetcode第59题)
- 保护系统 用数据库加密实现数据安全
- Python学习笔记:集成开发环境
- rust能捏人不_吃鸡:捏脸系统上线后,玩家们都嗨了
- 【BZOJ 2306】 2306: [Ctsc2011]幸福路径 (倍增floyd)
- mysql检查所作的修正_MySQL常见故障检测和修正_mysql
- J-Link V9固件修复
- vue element 实现树形菜单栏n层级分类,NavMenu menu
- 不知道怎样计算权重?告诉你8种确定权重方法
- eclipse安装及配置android基础教程
- 平时的工作如何体现一个人的技术深度?
- 一、恒生电子面试 (校招)
- java毕业设计网站SpringBoot美容院预约管理系统
- 操作系统实验报告_ucore_lab1