【水】基于ege的2048
不要问我ege怎么装
http://tieba.baidu.com/p/2227018541
好,现在我们装好了ege
开始写2048吧
没有算法,单纯模拟,不用讲解——这才叫【水】的含义
界面极度简单,不喜勿喷
#include<iostream>
#include <math.h>
#include <cstdlib>
#include <fstream>
#include <Windows.h>
#include <direct.h>
#include <graphics.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <string.h>
using namespace std;
int a[][];
int size;
int zj;
int jg;
int _lb;
int tou;
int han;
int sd;
int yc;
int bkr,bkg,bkb,wzr,wzg,wzb,btr,btg,btb;
color_t bk;
color_t wz;
color_t bt;
bool bo;
unsigned long long score=;
bool p[];
PIMAGE bl[];
unsigned int see;
int GetDirection() //读取方向
{
int ret = ; do
{
int ch = getch();
switch(ch)
{
case 'w':
ret = ; // top
break;
case 'a':
ret = ; // left
break;
case 'd':
ret = ; // right
break;
case 's':
ret = ; // down
break;
default:
break;
}
} while (ret == ); return ret;
}
int ha(int k)
{
int j=,i=;
for(;j!=k;i++)
j*=;
return i;
}
void print()
{
cleardevice();
setcolor(bt);
setfont(tou,tou/,"楷体");
xyprintf(,,"分数%llu",-score);
xyprintf(,tou,"种子%d",see);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(a[i][j]!=)
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg,bl[ha(abs(a[i][j]))],SRCCOPY);
}
int add()//增加数
{
int sum=;
int x[],y[];//空的格子的列表
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(!a[i][j])
{
x[++sum]=i;
y[sum]=j;
}
int p=(rand()%==)?:;//生成的数
int q=rand()%sum+;//列表里挑一个
a[x[q]][y[q]]=p;
print();
delay_ms();
return ;
}
bool over()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]==)||(a[i][j]==a[i-][j])||(a[i][j]==a[i+][j])||(a[i][j]==a[i][j+])||(a[i][j]==a[i][j-]))
return ;
if(MessageBox(NULL,"就喜欢你看不惯我又**不到我的感觉","你跪了",MB_RETRYCANCEL)==)
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
a[i][j]=;
score=;
add();
return ;
}
else
{
closegraph();
return ;
}
}
int _up()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i-][j]==a[i][j])||(a[i-][j]==)))
{
bo=;
int ii=i;
while((ii>)&&(a[--ii][j]==));
if(a[ii][j]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
cleardevice();
for(int zh=;zh<=(i-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb-zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]*=;
a[ii][j]=-a[ii][j];
score+=a[ii][j];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii++;
for(int zh=;zh<=(i-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb-zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]=ls;
print();
}
}
return ;
}
int _down()
{
for(int i=;i>=;i--)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i+][j]==a[i][j])||(a[i+][j]==)))
{
bo=;
int ii=i;
while((ii<)&&(a[++ii][j]==));
if(a[ii][j]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(ii-i)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb+zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]*=;
a[ii][j]=-a[ii][j];
score+=a[ii][j];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii--;
for(int zh=;zh<=(ii-i)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb+zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]=ls;
print();
}
}
return ;
}
int _left()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i][j-]==a[i][j])||(a[i][j-]==)))
{
bo=;
int ii=j;
while((ii>)&&(a[i][--ii]==));
if(a[i][ii]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(j-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb-zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]*=;
a[i][ii]=-a[i][ii];
score+=a[i][ii];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii++;
for(int zh=;zh<=(j-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb-zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]=ls;
print();
}
}
return ;
}
int _right()
{
for(int i=;i<=;i++)
for(int j=;j>=;j--)
if((a[i][j]!=)&&((a[i][j+]==a[i][j])||(a[i][j+]==)))
{
bo=;
int ii=j;
while((ii<)&&(a[i][++ii]==));
if(a[i][ii]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(ii-j)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb+zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]*=;
a[i][ii]=-a[i][ii];
score+=a[i][ii];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii--;
for(int zh=;zh<=(ii-j)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb+zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]=ls;
print();
}
}
return ;
}
color_t gc(int k)
{
if(k<=)
return EGERGB(+*k,+*k,);//0x9999FF;102 204 153
else
return EGERGB(,-*(k-),-*(k-));
}
int initblock(int k)
{
setbkcolor(gc(k),bl[k]);
setcolor(bk,bl[k]);
for(int i=;i<size;i++)
if(i<zj)
{
line(,i,zj-(int)sqrt(zj*zj-(zj-i)*(zj-i)),i,bl[k]);
line(size-zj+(int)sqrt(zj*zj-(zj-i)*(zj-i)),i,size,i,bl[k]);
}
else
if(i>=size-zj)
{
line(,i,zj-(int)sqrt(zj*zj-(size-zj-i)*(size-zj-i)),i,bl[k]);
line(size-zj+(int)sqrt(zj*zj-(size-zj-i)*(size-zj-i)),i,size,i,bl[k]);
}
char poi[];
itoa( << k,poi,);
setcolor(wz,bl[k]);
int _k=,__k=<<k;
while(__k>)
{
_k++;
__k/=;
}
setfont(-size/,size/(_k+),"宋体",bl[k]);
outtextxy(size/(_k+),size/,poi,bl[k]);
return ;
}
void init()
{
initgraph(size*+jg*+_lb*,*tou+jg*+han+size*);
setcaption("");
SetTransparent(getHWnd,,BLACK);
setrendermode(RENDER_MANUAL);
for(int i=;i<=;i+=)
{
bl[i]=newimage(size,size);
initblock(i);
}
setbkcolor(bk);
}
int main()
{
scanf("%d",&see);
srand(see);
fstream _file;
_file.open("set.txt",ios::in);
if(!_file)
{
freopen("set.txt","w",stdout);
if(MessageBox(NULL,"你还没建配置文件,是否自动创建\nUnless you know exactly what you're doing,\nis is recommended that you click 确定","我**你妈",MB_OKCANCEL)==)
printf("100\n20\n20\n10\n100\n10\n10\n1\n102\n204\n255\n0\n0\n0\n248\n217\n111\n");
else
system("notepad set.txt");
fclose(stdout);
}
freopen("set.txt","r",stdin);
scanf("%d%d%d%d%d",&size,&zj,&jg,&_lb,&tou);
scanf("%d%d%d%d%d",&han,&sd,&yc,&bkr,&bkg);
scanf("%d%d%d%d%d",&bkb,&wzr,&wzg,&wzb,&btr);
scanf("%d%d",&btg,&btb);
fclose(stdin);
bk=EGERGB(bkr,bkg,bkb);
wz=EGERGB(wzr,wzg,wzb);
bt=EGERGB(btr,btg,btb);
init();
add();
while(true)
{
if(over())
return ;
if(bo)
add();
bo=;
int c=GetDirection();
switch(c)
{
case :
_left();
if(!bo)
p[]=;
break;
case :
_up();
if(!bo)
p[]=;
break;
case :
_right();
if(!bo)
p[]=;
break;
case :
_down();
if(!bo)
p[]=;
break;
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
a[i][j]=abs(a[i][j]);
}
return ;
}
【水】基于ege的2048的更多相关文章
- 【水】基于ege的简单3D模拟
我们模拟从被观察物体射出光线,在眼球焦点交汇,然后打到视网膜上成像 ——足够了吧,剩下的难度应该是普及- 只是有一些常数可以自己调一下,看着顺眼就好 #include <graphics.h&g ...
- 基于jQuery的2048小游戏设计(网页版)
上周模仿一个2048小游戏,总结一下自己在编写代码的时候遇到的一些坑. 游戏规则:省略,我想大部分人都玩过,不写了 源码地址:https://github.com/xinhua6/2048game.g ...
- 基于linux 的2048
在 debian 下写了一个 2048, 效果如下: 感兴趣的朋友可以在这里(http://download.csdn.net/download/kamsau/7330933)下载. 版权声明:本文为 ...
- D4下午
开始学图论辣 图的基本模型 图是点和边组成的集合体,G = <V, E> v是点集,e是边集 还有就是有向图无向图啥的 算了太水了不写了 提几个没大见过的吧 环 环上任意两点间可以随意到达 ...
- 基于Monte Carlo方法的2048 A.I.
2048 A.I. 在 stackoverflow 上有个讨论:http://stackoverflow.com/questions/22342854/what-is-the-optimal-algo ...
- 从零开始的DIY智能家居 - 基于 ESP32 的智能水浊度传感器
前言 家里有个鱼缸养了几条鱼来玩玩,但是换水的问题着实头疼,经常一个不注意就忘记换水,鱼儿就没了.o(╥﹏╥)o 在获得 Spirit 1 边缘计算机 后就相当于有了一个人智能设备服务器,可以自己开发 ...
- (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)
1.Abstract 前几天做了一个呼吸灯,觉得确实挺有意思的:可惜的是只有一个灯管亮,板子上有四个灯,要是能让这些灯有序地亮起来,那应该更有趣味了!跟传统的一样,逻辑上做成一个流水灯的样式, ...
- 2048聚合版开源代码,cocos2d-js编写,基于CocosEditor开发工具,可运行Android,ios,html5等
1. [代码][JavaScript]代码 /** * @GameName : * 2048 * * @DevelopTool: * Cocos2d-x Editor (CocosEd ...
- 基于MFC对话框的2048游戏
在之前一篇<简单数字拼板游戏学习>基础上修改,地址:http://www.cnblogs.com/fwst/p/3706483.html 开发环境:Windows 7/ Visual St ...
随机推荐
- IO
文件过滤 http://codego.net/9245/ C# 文件处理 http://wenku.baidu.com/link?url=yXKiIA_OZYR4MIynDgz-qhOnfJoCyOQ ...
- ActiveMQ启动多个broker
具体步骤如下: 1.把activemq目录下的conf文件复制一份,叫做conf2, 命令: cp -r conf conf2 2.修改conf2目录下的activemq.xml文件 a.修改brok ...
- javascript数据结构与算法---检索算法
查找数据有2种方式,顺序查找和二分查找.顺序查找适用于元素随机排列的列表.二分查找适用于元素已排序的列表.二分查找效率更高,但是必须是已经排好序的列表元素集合. 一:顺序查找 顺序查找是从列表的第一个 ...
- openjdk 完全编译指南
从openjdk.java.net下载openjdk的软件包,你就获得了所有相关的源码. 强烈建议首先仔细看懂 README-builds.html 指南. 在执行 make all 之前,首先要 执 ...
- Js循环读取JSON数据
<script> $(function () { var jsonString = '{Unid:"1",CustomerName:"宋江",Age ...
- jvm指令调试
监控GC的工具分为2种:命令行工具和图形工具: 常用的命令行工具有: 注:下面的命令都在JAVA_HOME/bin中,是java自带的命令.如果您发现无法使用,请直接进入Java安装目录调用或者先设置 ...
- java基础 集合类
java集合类主要有以下集中: List结构的集合类: ArrayList类, LinkedList类, Vector类, Stack类 Map结构的集合类: HashMap类,Hashtable类 ...
- MySql: 忘记root密码
win7 + mysql 5.6.35 C:\Windows\system32>mysql --versionmysql Ver 14.14 Distrib 5.6.35, for Win64 ...
- Delete,Update与LEFT Join
UPDATE:UPDATE A SET ApproverID=NULL FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyB ...
- .NET 程序集与命名空间
程序集 程序集(assembly)是一个或多个托管模块,以及一些资源文件的逻辑组合. 组成部分 Windows文件首部 CLR文件首部 程序集清单 类型元数据 MSIL(CIL)代码 嵌入资源集 作用 ...