网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月20日漏签0天
c语言吧 关注:801,961贴子:4,377,518
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2 3 下一页 尾页
  • 96回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

回复:2048算法讨论

  • 只看楼主
  • 收藏

  • 回复
  • james19791
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
产生新数的函数:
void Add_New(void)
{
int i,j;
if(Empty_N() > 0)
{
while(1)
{
i=rand()%MAX_NUM;
j=rand()%MAX_NUM;
if(array[i][j] == 0)
{
if(rand()%100 < 80)//2和4按8:2的比例出现
{
array[i][j]=2;
}
else
{
array[i][j]=4;
}
break;
}
}
}
}


  • james19791
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
判断数组能否移动,返回1表示能移动,0表示不能移动:
int Check_Move(void)
{
int i,j;
int a = 0;
int b = 0;
if(Empty_N() == 0)
{
for(i=0;i< MAX_NUM;i++)
{
for(j=0;j<MAX_NUM -1;j++)
{
if(array[i][j]==array[i][j+1])
a=1;
}
}
for(j=0;j<MAX_NUM;j++)
{
for(i=0;i<MAX_NUM -1;i++)
{
if(array[i][j]==array[i+1][j])
b=1;
}
}
if(a==0 && b==0)
return 0;
else
return 1;
}
else
return 1;
}


2026-04-20 05:50:03
广告
不感兴趣
开通SVIP免广告
  • 好奇的Q
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
学习ing


  • james19791
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
由于游戏得分是在移动时,相同两个数合并产生的,每次合并就在的得分上加上合并后的数。所以,要定义一个全局变量记录得分,还要在移动函数中加入得分计算。上面的移动函数重写。
加入两行代码即可。
int score = 0;//全局变量,记录得分
void Move(MOVE_TYPE move_fx)
{
int i,j,k;
MOVE_PARA para;
para = Move_Para(move_fx);
if(move_fx == MOVE_LEFT || move_fx == MOVE_RIGHT)
{
for(i = 0; i < MAX_NUM; i++)
{
for(k = 0; k < MAX_NUM/2; k++)
{
for(j = para.first_n; j = MAX_NUM - para.first_n; j += para.inc)
{
if(array[i][j] == 0)
{
array[i][j] = array[i][j + para.inc];
array[i][j + para.inc] = 0;
}
else
if(array[i][j] == array[i][j + para.inc])
{
array[i][j] *=2;
array[i][j + para.inc] = 0;
score += array[i][j];//计算得分
}
}
}
}
}
else
if(move_fx == MOVE_UP || move_fx == MOVE_DOWN)
{
for(j = 0; j < MAX_NUM; j++)
{
for(k = 0; k < MAX_NUM/2; k++)
{
for(i = para.first_n; i = MAX_NUM - para.first_n; i += para.inc)
{
if(array[i][j] == 0)
{
array[i][j] = array[i + para.inc][j];
array[i + para.inc][j] = 0;
}
else
if(array[i][j] == array[i + para.inc][j])
{
array[i][j] *=2;
array[i + para.inc][j] = 0;
score += array[i][j];//计算得分
}
}
}
}
}
}


  • james19791
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
检测2048的函数:
int Check_Win(void)
{
int i,j;
int a=0;
if(Check_Move())
{
for(i=0;i<MAX_NUM;i++)
{
for(j=0;j<MAX_NUM;j++)
{
if(array[i][j]==2048)
a=1;
break;
}
if(a == 1)
break;
}
}
return a;
}


  • 吞噬丶万界
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一楼那样的图形界面怎么写?


  • james19791
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
该做的准备工作都做完了,剩下的就是在main函数里将它们组合起来运行。有兴趣的可以自行完成,欢迎交流~!


  • 嘤嘤嘤荫
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
厉害。


2026-04-20 05:44:03
广告
不感兴趣
开通SVIP免广告
  • 薄壳坏心
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我以为说的是2048AI


  • a327380135
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

   --果然有理有据令人信服简直一本正经的强行胡说八道竟然令我无言以对!


  • 狂风暴雨中的狼
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
必须顶,要申精


  • 哲学半页
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主求注释


  • silencehhliang
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#(啊?)
   --谁跟我提雷锋,我就跟谁急,TMD我的电脑到现在还开不了机!


  • 哭笑乐想
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
怎么编的


2026-04-20 05:38:03
广告
不感兴趣
开通SVIP免广告
  • 午夜杏花
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
界面怎么搞的啊。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2 3 下一页 尾页
  • 96回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示