当前位置:首页 > 代码 > 正文

电脑版2048游戏代码(2048游戏html代码)

admin 发布:2022-12-19 09:13 122


今天给各位分享电脑版2048游戏代码的知识,其中也会对2048游戏html代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

C语言实现2048游戏

原文链接:

C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训 部分功能演示视频。

实现的全部功能:

1、字模显示封面组员名字

2、完成2048游戏在板子上的运行

3、成功或者失败需要有标志也可以计分

4、成功或者失败后可以重新开心

C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训---全部功能演示

大游戏多少代码

40+ 行 JS 代码打造你的 2048 游戏 AI

2048 游戏如下图所示,它由一个 4*4 共 16 个方块组成。玩家可以通过「上下左右」四个方向操纵方块滑动,滑动时两个相邻且数值相同的方块会合并,新的方块,数值为两者之和。当游戏里任意方块的数值达到 2048

python小游戏2048,上班摸鱼必备(附源码)

话不多说,直接上菜

为了方便大家copy,我就不分段解释了

import turtle, random

# 定义一个类,用来画除了数字方块之外的图形

class BackGround(turtle.Turtle):

    def __init__(self):

        super().__init__()

        self.penup()

        self.ht()

    def draw_block(self):

        self.shape('bg.gif')  # 画出背景方块

        for i in allpos:

            self.goto(i)

            self.stamp()

        self.color('white', 'white')  # 画出其他背景

        self.goto(-215, 120)

        self.begin_fill()

        self.goto(215, 120)

        self.goto(215, 110)

        self.goto(-215, 110)

        self.end_fill()

        self.shape('title.gif')

        self.goto(-125, 210)

        self.stamp()

        self.shape('score.gif')

        self.goto(125, 245)

        self.stamp()

        self.shape('top_score.gif')

        self.goto(125, 170)

        self.stamp()

    # 游戏失败及达成2048的提示文字

    def judge(self):

        global flag_win, flag_win_lose_text

        self.color('blue')

        judge = 0  # 判断是否还有位置可以移动

        for i in block_dic.values():

            for j in block_dic.values():

                if i.num == 0 or i.num == j.num and i.distance(j) == 100:

                    judge += 1

        if judge == 0:  # 无位置可移动,游戏失败

            self.write('    GAME OVER\n重新开始请按空格键', align='center', font=('黑体', 30, 'bold'))

            flag_win_lose_text = False

        if flag_win is True:  # 此条件让2048达成的判断只能进行一次

            for k in block_dic.values():

                if k.num == 2048:  # 游戏达成

                    flag_win = False

                    self.write('    达成2048\n继续游戏请按回车键', align='center', font=('黑体', 30, 'bold'))

                    flag_win_lose_text = False

    def win_lose_clear(self):

        global flag_win_lose_text

        self.clear()

        flag_win_lose_text = True

    def show_score(self):  # 分值的显示

        global score, top_score

        if score top_score:

            top_score = score

            with open('.\\score.txt', 'w') as f:

                f.write(f'{top_score}')

        self.color('white')

        self.goto(125, 210)

        self.clear()

        self.write(f'{score}', align='center', font=('Arial', 20, 'bold'))

        self.goto(125, 135)

        self.write(f'{top_score}', align='center', font=('Arial', 20, 'bold'))

# 数字方块类

class Block(turtle.Turtle):

    def __init__(self):

        super().__init__()

        self.ht()

        self.penup()

        self.num = 0

    def draw(self):

        self.clear()

        dic_draw = {2: '#eee6db', 4: '#efe0cd', 8: '#f5af7b',

                    16: '#fb9660', 32: '#f57d5a', 64: '#f95c3d',

                    128: '#eccc75', 256: '#eece61', 512: '#efc853',

                    1024: '#ebc53c', 2048: '#eec430', 4096: '#aeb879',

                    8192: '#aab767', 16384: '#a6b74f'}

        if self.num 0:  # 数字大于0,画出方块

            self.color(f'{dic_draw[self.num]}')  # 选择颜色

            self.begin_fill()

            self.goto(self.xcor()+48, self.ycor()+48)

            self.goto(self.xcor()-96, self.ycor())

            self.goto(self.xcor(), self.ycor()-96)

            self.goto(self.xcor()+96, self.ycor())

            self.goto(self.xcor(), self.ycor()+96)

            self.end_fill()

            self.goto(self.xcor()-48, self.ycor()-68)

            if self.num 4:  # 按照数字选择数字的颜色

                self.color('white')

            else:

                self.color('#6d6058')

            self.write(f'{self.num}', align='center', font=('Arial', 27, 'bold'))

            self.goto(self.xcor(), self.ycor()+20)

class Game():

    def init(self):

        back = BackGround()  # 实例画出游戏的背景

        back.draw_block()

        for i in allpos:  # 画出16个海龟对应16个数字块

            block = Block()

            block.goto(i)

            block_dic[i] = block

        game.grow()

    def restart(self):  # 重开游戏的方法

        global score, flag_win_lose_text

        score = 0

        for i in block_dic.values():

            i.num = 0

            i.clear()

        win_lose_text.clear()

        game.grow()

        flag_win_lose_text = True  # 此flag为游戏达成或失败出现提示语后的判断,要提示语被clear后才能继续move

    def grow(self):  # 随机出现一个2或4的数字块

        block_list = []

        for i in allpos:

            if block_dic[i].num == 0:

                block_list.append(block_dic[i])  # 挑出空白方块的海龟

        turtle_choice = random.choice(block_list)  # 随机选中其中一个海龟

        turtle_choice.num = random.choice([2, 2, 2, 2, 4])  # 赋属性num=2/4

        turtle_choice.draw()

        win_lose_text.judge()

        show_score_text.show_score()

        ms.update()

    def move_up(self):

        allpos1 = allpos[::4]  # 切片为四列

        allpos2 = allpos[1::4]

        allpos3 = allpos[2::4]

        allpos4 = allpos[3::4]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_down(self):

        allpos1 = allpos[-4::-4]

        allpos2 = allpos[-3::-4]

        allpos3 = allpos[-2::-4]

        allpos4 = allpos[-1::-4]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_left(self):

        allpos1 = allpos[:4]

        allpos2 = allpos[4:8]

        allpos3 = allpos[8:12]

        allpos4 = allpos[12:16]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_right(self):

        allpos1 = allpos[-1:-5:-1]

        allpos2 = allpos[-5:-9:-1]

        allpos3 = allpos[-9:-13:-1]

        allpos4 = allpos[-13:-17:-1]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_move(self, allpos1, allpos2, allpos3, allpos4):

        if flag_win_lose_text is True:

            count1 = self.move(allpos1)  # 四列或四行依次移动

            count2 = self.move(allpos2)

            count3 = self.move(allpos3)

            count4 = self.move(allpos4)

            if count1 or count2 or count3 or count4:  # 判断是否有方块移动,有才能继续出现新的数字块

                self.grow()

    def move(self, pos_list):

        num_list = []  # 为某一列或行的数字块海龟的坐标

        for i in pos_list:

            num_list.append(block_dic[i].num)  #  把这些海龟的NUM形成list

        new_num_list, count = self.list_oper(num_list)  #  只是list_oper的方法形成新的list

        for j in range(len(new_num_list)):  # 把新的list依次赋值给对应的海龟.num属性并调用draw()方法

            block_dic[pos_list[j]].num = new_num_list[j]

            block_dic[pos_list[j]].draw()

        return count

    def list_oper(self, num_list):  # num_list的操作,假设其为【2,0,2,2】

        global score

        count = True

        temp = []

        new_temp = []

        for j in num_list:

            if j != 0:

                temp.append(j)  # temp=[2,2,2]

        flag = True

        for k in range(len(temp)):

            if flag:

                if k len(temp)-1 and temp[k] == temp[k+1]:

                    new_temp.append(temp[k]*2)

                    flag = False

                    score += temp[k]

                else:

                    new_temp.append(temp[k])  # new_temp=[4,2]

            else:

                flag = True

        for m in range(len(num_list)-len(new_temp)):

            new_temp.append(0)  # new_temp=[4,2,0,0]

        if new_temp == num_list:

            count = False  # 此变量判断num_list没有变化,数字块无移动

        return(new_temp, count)

if __name__ == '__main__':

    ms = turtle.Screen()  # 主窗口的设置

    ms.setup(430, 630, 400, 50)

    ms.bgcolor('gray')

    ms.title('2048')

    ms.tracer(0)

    ms.register_shape('bg.gif')

    ms.register_shape('title.gif')

    ms.register_shape('score.gif')

    ms.register_shape('top_score.gif')

    block_dic = {}  # 放数字方块海龟的字典,位置坐标为key,对应海龟为value

    allpos = [(-150, 50), (-50, 50), (50, 50), (150, 50),

              (-150, -50), (-50, -50), (50, -50), (150, -50),

              (-150, -150), (-50, -150), (50, -150), (150, -150),

              (-150, -250), (-50, -250), (50, -250), (150, -250)]

    flag_win = True  # 达成2048的判断,让达成的文字仅出现一次

    flag_win_lose_text = True  # 用来判断失败或成功的提示文字是否有被清除,不清除不能继续移动方块

    score = 0

    with open('.\\score.txt', 'r') as f:

        top_score = int(f.read())  #  读取score中的数据

    show_score_text = BackGround()

    win_lose_text = BackGround()

    game = Game()

    game.init()

    ms.listen()

    ms.onkey(game.move_up, 'Up')

    ms.onkey(game.move_down, 'Down')

    ms.onkey(game.move_left, 'Left')

    ms.onkey(game.move_right, 'Right')

    ms.onkey(win_lose_text.win_lose_clear, 'Return')

    ms.onkey(game.restart, 'space')

    ms.mainloop()

这是游戏界面:

欢迎挑战最高分。

要运行出来,必须本地要有这些文件:bg.gif,score.gif,title.gif,top_score.gif,score.txt

我把这些文件放在了群里,还有一些学习的资料,群号642109462,欢迎对python感兴趣的进群讨论。

支持作者的,可以关注和点赞。感谢你们!

求2048游戏C语言code!

我还真有个 这是个VC版的 网上找的  我只是搬运工  Linux版本的有点麻烦,用的ncurse。如果要的话我再给

#include stdio.h

#include stdlib.h

#include time.h

#include conio.h

#include string.h

int MAP[4][4],gre;

int add(int n)

{

int num = rand();

int tf = num % 2;

int x,y,i;

x = num % 4;

srand((unsigned int)time(0));

srand((unsigned int)time(0) + (unsigned int)num);

y = rand();

y %= 4;

if (tf)

num = 2;

else

num = 4;

if (n == 0)

{

MAP[x][y] = num;

}

else if (n == 1)

{

if (MAP[3][y] == 0)

MAP[3][y] = num;

else

for (i = 0; i  4; i++)

if (MAP[3][i] == 0)

{

MAP[3][i] = num;

break;

}

}

else if (n == 2)

{

if (MAP[0][y] == 0)

MAP[0][y] = num;

else

for (i = 0; i  4; i++)

if (MAP[0][i] == 0)

{

MAP[0][i] = num;

break;

}

}

else if (n == 3)

{

if (MAP[x][3] == 0)

MAP[x][3] = num;

else

for (i = 0; i  4; i++)

if (MAP[i][3] == 0)

{

MAP[i][3] = num;

break;

}

}

else if (n == 4)

{

if (MAP[x][0] == 0)

MAP[x][0] = num;

else

for (i = 0; i  4; i++)

if (MAP[i][0] == 0)

{

MAP[i][0] = num;

break;

}

}

}

int movup(void)

{

int i,k,t;

int tf = 0;

for (k = 0; k  4; k++)

{

int n = 4;

while (n--)

for (i = 0; i  3; i++)

if (MAP[i][k] == 0)

{

for (t = i; t  3; t++)

{

MAP[t][k] = MAP[t + 1][k];

MAP[t + 1][k] = 0;

tf = 1;

}

}

for (i = 0; i  3; i++)

{

if (MAP[i][k] == MAP[i + 1][k])

{

MAP[i][k] *= 2;

gre += MAP[i][k];

if (MAP[i][k] == 2048)

return 0;

for (t = i + 1; t  3; t++)

{

MAP[t][k] = MAP[t + 1][k];

MAP[t + 1][k] = 0;

tf = 1;

}

}

}

}

if (tf)

add(1);

return 1;

}

int movdow(void)

{

int i,k,t;

int tf = 0;

for (k = 0; k  4; k++)

{

int n = 4;

while (n--)

for (i = 3; i  0; i--)

if (MAP[i][k] == 0)

{

for (t = i; t  0; t--)

{

MAP[t][k] = MAP[t - 1][k];

MAP[t - 1][k] = 0;

tf = 1;

}

}

for (i = 3; i  0; i--)

{

if (MAP[i][k] == MAP[i - 1][k])

{

MAP[i][k] *= 2;

gre += MAP[i][k];

if (MAP[i][k] == 2048)

return 0;

for (t = i - 1; t  0; t--)

{

MAP[t][k] = MAP[t - 1][k];

MAP[t - 1][k] = 0;

tf = 1;

}

}

}

}

if (tf)

add(2);

return 1;

}

int movlif(void)

{

int i,k,t;

for (i = 0; i  4; i++)

{

int n = 4;

while (n--)

for (k = 0; k  3; k++)

{

if(MAP[i][k] == 0)

for (t = k; t  3; t++)

{

MAP[i][t] = MAP[i][t + 1];

MAP[i][t + 1] = 0;

}

}

for (k = 0;k  3;k++)

{

if (MAP[i][k] == MAP[i][k + 1])

{

MAP[i][k] *= 2;

gre += MAP[i][k];

if (MAP[i][k] == 2048)

return 0;

for (t = k + 1; t  3; t++)

{

MAP[i][t] = MAP[i][t + 1];

MAP[i][t + 1] = 0;

}

}

}

}

add(3);

return 1;

}

int movri(void)

{

int i,k,t;

for (i = 0; i  4; i++)

{

int n = 4;

while (n--)

for (k = 3; k  0; k--)

{

if(MAP[i][k] == 0)

for (t = k; t  0; t--)

{

MAP[i][t] = MAP[i][t - 1];

MAP[i][t - 1] = 0;

}

}

for (k = 3;k  0;k--)

{

if (MAP[i][k] == MAP[i][k - 1])

{

MAP[i][k] *= 2;

gre += MAP[i][k];

if (MAP[i][k] == 2048)

return 0;

for (t = k - 1; t  0; t--)

{

MAP[i][t] = MAP[i][t - 1];

MAP[i][t - 1] = 0;

}

}

}

}

add(4);

return 1;

}

int mov(void)

{

char key;

int tf = 1;

fflush(stdin);

key = getch();

if (key == 72)

tf = movup();

else if (key == 80)

tf = movdow();

else if (key == 75)

tf = movlif();

else if (key == 77)

tf = movri();

if (!tf)

{

system("CLS");

printf ("恭喜达到2048!\n");

}

return tf;

}

int pd (void)

{

int i,k;

for (i = 0; i  4; i++)

{

for (k = 1; k  4; k++)

if (MAP[i][k - 1] == MAP[i][k])

return 0;

}

for (i = 0; i  4; i++)

{

for (k = 1; k  4; k++)

if (MAP[k - 1][i] == MAP[k][i])

return 0;

}

system("CLS");

printf ("游戏结束!\n");

return 1;

}

int pri (void)

{

printf ("得分:%d\n",gre);

printf ("\t┏━━┳━━┳━━┳━━┓\n");

printf ("\t┃%4d┃%4d┃%4d┃%4d┃\n",MAP[0][0],MAP[0][1],MAP[0][2],MAP[0][3]);

printf ("\t┣━━╋━━╋━━╋━━┫\n");

printf ("\t┃%4d┃%4d┃%4d┃%4d┃\n",MAP[1][0],MAP[1][1],MAP[1][2],MAP[1][3]);

printf ("\t┣━━╋━━╋━━╋━━┫\n");

printf ("\t┃%4d┃%4d┃%4d┃%4d┃\n",MAP[2][0],MAP[2][1],MAP[2][2],MAP[2][3]);

printf ("\t┣━━╋━━╋━━╋━━┫\n");

printf ("\t┃%4d┃%4d┃%4d┃%4d┃\n",MAP[3][0],MAP[3][1],MAP[3][2],MAP[3][3]);

printf ("\t┗━━┻━━┻━━┻━━┛\n");

}

int main()

{

int i;

char s[100];

system("COLOR 5F");

printf ("\n\t【2048】控制台版\n\n");

printf ("游戏规则(如同名手游):\n");

printf ("\t开始方格内会出现2或者4等这两个小数字,\n");

printf ("\t玩家只需要上下左右(方向键控制)其中一个方向来移动出现的数字,\n");

printf ("\t所有的数字就会向滑动的方向靠拢,\n");

printf ("\t而滑出的空白方块就会随机出现一个数字,\n");

printf ("\t相同的数字相撞时会叠加靠拢,\n");

printf ("\t然后一直这样,不断的叠加最终拼凑出2048这个数字就算成功。\n");

printf ("\n\n!输入任意非零字符开始游戏!\n(建议将控制台设置为大字体)\n");

while (scanf ("%s",s),strcmp(s,"0"))

{

memset (MAP,0,sizeof (MAP));

gre = 0;

system("CLS");

add(0);

pri();

while (mov())

{

fflush(stdin);

system("CLS");

pri();

if (pd())

break;

}

printf ("按任继续游戏!输入0退出程序!\n");

}

return 0;

}

急求游戏2048源代码,要求使用C++和HGE编写,充分体现面向对象编程的特点。

一看就知道是作业,具体代码还是自己写吧,我可以给一些思路。

构建一个类来存储矩阵的状态,以及操作(上下左右)的代码,一个简单的实现方案是只需要写向一个方向移动的代码,然后通过转换矩阵的方向来实现其他的方向。

面向对象嘛你,可以父类定义N*N矩阵,只实现一个移动方向,子类通过继承实现4*4矩阵,和各个移动方向。

电脑版2048游戏代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于2048游戏html代码、电脑版2048游戏代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/5789.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载