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

安卓版2048源代码(2048程序代码)

admin 发布:2022-12-19 10:02 84


本篇文章给大家谈谈安卓版2048源代码,以及2048程序代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

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

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

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

2048游戏怎么玩?

2048游戏就是相同的数字相互翻倍叠加,从最开始的2开始到4再到8最后一直可以叠加到2048,具体玩法如下:

1、刚打开游戏的界面,有两个2,并且我们需要知道每次移动后都会出现一个2,只有相同的数才能相加,也就是每次合并之后数据都会翻倍。

2、这个游戏最关键的思想是要形成一种势,就大数在一边,小数在一边,这样相同的数才能更好的结合在一起。

3、当玩的数据比较大的时候就需要形成S形。

4、将上图的S形依次从小推上去!这样就轻松的形成了第一个2048。

注意事项

玩的时候最好是时刻让最右边一排或者两排是满的,这样上下移动的时候,最右边一排形成的局势就不会破坏。同时除了在不得已的情况,千万别向左移动。

c语言猜数字游戏源代码

小游戏2048:

#includestdio.h

#includestdlib.h

#includeconio.h

#includetime.h

#includewindows.h

int  jsk( );   //计算空格数

void rsgm( );  //重置游戏

void inkey( );  //按键输入

void left( );   //向左移动

void right( );  //向右移动

void up( );  //向上移动

void down( );  //向下移动

void show( );   //输出界面

void adnum( ); //添加随机数

void yes( );   //游戏是否结束(1是0否)

void gtxy(int x, int y); //控制光标位置的函数

int a[4][4];   //存储16个格子中的数字

int score = 0;  //每局得分

int best = 0;  //最高得分

int ifnum;  //是否需要添加数字(1是0否)

int over;   //游戏结束标志(1是0否)

int i,j,k;

int main( )

{ rsgm( );  //重置游戏

  inkey( );  //按键输入

  return 0;

}

void Color(int a)   //设定字符颜色的函数(a应为1-15)

{  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);  }

void rsgm( )   //重置游戏

{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0));  //启动随机数发生器

int n = rand( ) % 16;   //随机函数产生0-15的数字

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

{for (j = 0; j 4; j++)

   { if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }

                        else { a[i][j] = 4; } n--; }

     else { a[i][j] = 0; n--; }

   }

}

adnum( );

system("cls");

CONSOLE_CURSOR_INFO gb={1,0};  //以下两行是隐藏光标的设置,gb代指光标

SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), gb );

Color(14);   //设置字体淡黄色

printf("\n\n\t\t  2048小游戏"); Color(7);   //恢复白字黑底

printf("\n\t┌──────┬──────┬──────┬──────┐");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t└──────┴──────┴──────┴──────┘");

show( );

}

void show( )   //输出界面

{ for(i=0;i4;i++)

for(j=0;j4;j++)

   { gtxy(7*j+9,2*i+4);   //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

     if(a[i][j]==0){printf("      "); Color(7); printf("│");}

     else if(a[i][j]10){ if (a[i][j] == 2) { Color(14); }

                                else if (a[i][j] == 4) { Color(13); }

                                else if (a[i][j] == 8) { Color(12); }

                                printf("   %d  ", a[i][j]); Color(7 ); printf("│");

                              }

    else if (a[i][j] 100){if (a[i][j] == 16) { Color(12); }

                                   else if (a[i][j] == 32) { Color(10); }

                                   else if (a[i][j] == 64) { Color(2 ); }

                                   printf("  %d  ", a[i][j]); Color(7); printf("│");

                                 }

   else if (a[i][j] 1000) {if (a[i][j] == 128) { Color(9); }

                                       else if (a[i][j] == 256) { Color(1); }

                                       else if (a[i][j] == 512) { Color(13); }

                                       printf("  %d ", a[i][j]); Color(7); printf("│");

                                     }

    else if (a[i][j] 10000) {if (a[i][j] == 1024) { Color(5); }

                                         else { Color(15); }

                                         printf(" %d ", a[i][j]); Color(7); printf("│");

                                       }

}

if (jsk( ) == 0)

  {  yes( );  if (over) { gtxy(9,12); Color(10);

                                printf("\n\n  游戏结束!是否继续? [ Y/N ]:"); }

  }

}

void inkey( )   //按键输入

{ int key;

while (1)

    { key = getch( );

      if (over) { if (key == 89|| key == 121) { rsgm( ); continue; }

                      else  if (key == 78|| key == 110) { return; }

                      else  continue; }

      ifnum = 0;

     if(key==224)key=getch( );

        switch (key)

            { case 75: left( ); break;

              case 77: right( ); break;

              case 72: up( ); break;

              case 80: down( );break;

}

  if (score best) { best = score; }

  if (ifnum) { adnum( ); show( ); }

}

}

int jsk( )   //计算空格数

{ int n = 0;

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

   { for (j = 0; j 4; j++) { if ( a[i][j] == 0) {n++;}  }   }

return n;

}

void left( )   //向左移动

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

{for (j = 1, k = 0; j 4; j++)

    { if (a[i][j] 0)

       { if ( a[i][k] == a[i][j])

             { a[i][k] *= 2;  k++;

                score = score + 2 * a[i][j];

                a[i][j] = 0;  ifnum = 1; }

          else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

          else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }

          k++; }

       }

     }

}

}

void right( )   //向右移动

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

  {for (j = 2, k = 3; j = 0; j--)

     {if (a[i][j] 0)

        { if (a[i][k] == a[i][j])

               {a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }

    else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

    else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }

   }

     }

}

}

void up( )   //向上移动

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

{for (j = 1, k = 0; j 4; j++)

     {if (a[j][i] 0)

         {if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];

                                           a[j][i] = 0; ifnum = 1; }

          else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

          else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }

          k++; }

   }

    }

}

}

void down( )   //向下移动

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

{for (j = 2, k = 3; j = 0; j--)

  {if (a[j][i] 0)

     {if (a[k][i] == a[j][i])

          {a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }

       else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

       else {a[k - 1][i] = a[j][i];

                if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }

      }

   }

}

}

void adnum( )   //添加随机数

{ srand(time(0)); int n = rand( ) % jsk( );

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

   {for (int j = 0; j 4; j++)

      { if (a[i][j] == 0) {if (n != 0) { n--; }

        else {int k = rand( ) % 3;

                if (k == 0 || k == 1) {a[i][j] = 2; return; }

                else {a[i][j] = 4; return; } }

      }

   }

}

}

void yes( )   //游戏是否结束

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

{for (int j = 0; j 3; j++)

     {if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}

}

over = 1;

}

void gtxy(int x, int y)   //控制光标位置的函数

{ COORD zb;   //zb代指坐标

zb.X = x;

zb.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);

}

求2048朝代版的源代码?

import javax.swing.*;

import java.awt.*;

@SuppressWarnings("serial")

public class Game_block extends JLabel {

private int value;

public Game_block() {

super("go!");

value = 0;

setFont(new Font("font", Font.PLAIN, 40));

setBackground(Color.black);

}

public int getValue() {

return value;

}

public void setValue(int value) {

this.value = value;

String Text = String.valueOf(value);

if (value != 0){

if(value == 2)

setText("夏");

}

if (value != 0){

if(value == 4)

setText("商");

}

if (value != 0){

if(value == 8)

setText("周");

}

if (value != 0){

if(value == 16)

setText("秦");

}

if (value != 0){

if(value == 32)

setText("汉");

}

if (value != 0){

if(value == 64)

setText("三国");

}

if (value != 0){

if(value == 128)

setText("南北朝");

}

if (value != 0){

if(value == 256)

setText("隋");

}

if (value != 0){

if(value == 1024)

setText("五代十国");

}

if (value != 0){

if(value == 2048)

setText("宋辽");

}

if (value != 0){

if(value == 4096)

setText("宋金");

}

if (value != 0){

if(value == 8192)

setText("元");

}

if (value != 0){

if(value == 16384)

setText("明");

}

if (value != 0){

if(value == 32768)

setText("清");

}

if (value != 0){

if(value == 65536)

setText("现代");

}

else

setText("2048");

setColor();

}

public void setColor() {

if (this.value == 0)

setBackground(Color.black);

else if (this.value == 2)

setBackground(new Color(238, 228, 218));

else if (this.value == 4)

setBackground(new Color(248, 232, 248));

else if (this.value == 8)

setBackground(new Color(243, 177, 116));

else if (this.value == 16)

setBackground(new Color(243, 177, 126));

else if (this.value == 32)

setBackground(new Color(248, 149, 90));

else if (this.value == 64)

setBackground(new Color(249, 94, 50));

else if (this.value == 128)

setBackground(new Color(239, 207, 108));

else if (this.value == 256)

setBackground(new Color(239, 207, 99));

else if (this.value == 512)

setBackground(new Color(239, 203, 82));

else if (this.value == 1024)

setBackground(new Color(239, 199, 57));

else if (this.value == 2048)

setBackground(new Color(239, 195, 41));

else if (this.value == 4096)

setBackground(new Color(255, 60, 57));

else if (this.value == 8192)

setBackground(new Color(258, 60, 59));

else if (this.value == 16384)

setBackground(new Color(262, 62, 59));

else if (this.value == 32768)

setBackground(new Color(262, 64, 62));

else if (this.value == 65536)

setBackground(new Color(264, 64, 66));

}

}

______________________________________________________

import java.awt.*;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.*;

@SuppressWarnings("serial")

public class Game_my2048 extends JFrame implements KeyListener {

Game_block[] block;

JPanel panel;

boolean numFlag;

int moveFlag;

int a ;//a 的引入是为了防止连加的情况出现

public Game_my2048() {

numFlag = true;

moveFlag = 0;

block = new Game_block[16];

setTitle("2048朝代版");

setSize(400, 400);

setLocation(500, 200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = (JPanel) getContentPane();

panel.setLayout(new GridLayout(4, 4, 5, 5));

addBlock();

for (int i = 0; i 2; i++)

appearBlock();

this.addKeyListener(this);

this.setVisible(true);

}

public void addBlock() {

for (int i = 0; i 16; i++) {

block[i] = new Game_block();

block[i].setHorizontalAlignment(JLabel.CENTER);

// 不透明

block[i].setOpaque(true);

panel.add(block[i]);

}

}

public void appearBlock() {

while(numFlag) {

int index = (int) (Math.random() * 16);

if (block[index].getValue() == 0) {

if (Math.random() 0.5)

block[index].setValue(2);

else

block[index].setValue(4);

break;

}

}

}

public void judgeAppear() {

int sum = 0;

for (int i = 0; i 16; i++) {

if (block[i].getValue() != 0)

sum++;

}

if (sum == 16)

numFlag = false;

}

public void upBlock() {

for (int i = 12; i 16; i++) {

int index = i;

for (int j = i - 4; j = i - 12; j -= 4) {

int valueI = block[index].getValue(), valueJ = block[j]

.getValue();

if (valueJ == 0) {

block[index].setValue(0);

block[j].setValue(valueI);

} else {

if (valueI == valueJ) {

block[index].setValue(0);

block[j].setValue(valueI + valueJ);

if (valueI + valueJ == 4096)

win();

numFlag = true;

moveFlag = 0;

} else if (numFlag == false)

moveFlag += 1;

}

index = j;

}

}

}

public void downBlock() {

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

a = 5;

int index = i;

for (int j = i + 4; j = i + 12; j += 4) {

int valueI = block[index].getValue(), valueJ = block[j]

.getValue();

if (valueJ == 0) {

block[index].setValue(0);

block[j].setValue(valueI);

} else {

if (valueI == valueJ) {

block[index].setValue(0);

block[j].setValue(valueI + valueJ);

if (valueI + valueJ == 4096)

win();

numFlag = true;

moveFlag = 0;

} else if (numFlag == false)

moveFlag += 1;

}

index = j;

}

}

}

public void rightBlock() {

for (int i = 0; i = 12; i += 4) {

int index = i;

for (int j = i + 1; j = i + 3; j++) {

int valueI = block[index].getValue(), valueJ = block[j]

.getValue();

if (valueJ == 0) {

block[index].setValue(0);

block[j].setValue(valueI);

} else {

if (valueI == valueJ) {

block[index].setValue(0);

block[j].setValue(valueI + valueJ);

if (valueI + valueJ == 4096)

win();

numFlag = true;

moveFlag = 0;

} else if (numFlag == false)

moveFlag += 1;

}

index = j;

}

}

}

public void leftBlock() {

for (int i = 3; i = 15; i += 4) {

int index = i;

for (int j = i - 1; j = i - 3; j--) {

int valueI = block[index].getValue(), valueJ = block[j]

.getValue();

if (valueJ == 0) {

block[index].setValue(0);

block[j].setValue(valueI);

} else {

if (valueI == valueJ) {

block[index].setValue(0);

block[j].setValue(valueI + valueJ);

if (valueI + valueJ == 4096)

win();

numFlag = true;

moveFlag = 0;

} else if (numFlag == false)

moveFlag += 1;

}

index = j;

}

}

}

@Override

public void keyPressed(KeyEvent e) {

switch (e.getKeyCode()) {

case KeyEvent.VK_UP:

upBlock();

judgeAppear();

appearBlock();

over();

break;

case KeyEvent.VK_DOWN:

downBlock();

judgeAppear();

appearBlock();

over();

break;

case KeyEvent.VK_LEFT:

leftBlock();

judgeAppear();

appearBlock();

over();

break;

case KeyEvent.VK_RIGHT:

rightBlock();

judgeAppear();

appearBlock();

over();

break;

}

}

public void over() {

if (!numFlag moveFlag = 36) {

block[4].setText("G");

block[5].setText("A");

block[6].setText("M");

block[7].setText("E");

block[8].setText("O");

block[9].setText("V");

block[10].setText("E");

block[11].setText("R");

block[11].addMouseListener(new MouseAdapter() {

@Override

public void mousePressed(MouseEvent e) {

reStart();

}

});

}

}

public void win() {

block[0].setText("Y");

block[1].setText("O");

block[2].setText("U");

block[13].setText("W");

block[14].setText("I");

block[15].setText("N");

block[15].addMouseListener(new MouseAdapter() {

@Override

public void mousePressed(MouseEvent e) {

reStart();

}

});

}

public void reStart(){

numFlag=true;

moveFlag=0;

for(int i=0;i 16;i++)

block[i].setValue(0);

for (int i = 0; i 2; i++)

appearBlock();

}

@Override

public void keyTyped(KeyEvent e) {

}

@Override

public void keyReleased(KeyEvent e) {

}

public static void main(String args[]) {

JFrame.setDefaultLookAndFeelDecorated(true);

new Game_my2048();

}

}

__________________________________________________________________________

这个代码却少很多功能的

如何Python写一个安卓APP

前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,还真行。

既然要写个APP,那么总得要有个想法吧。 

其实笔者想做两个APP来着,一个是自己写着好玩的,一个是关于运维的。 

关于运维的APP,设计应该如下 

可能长这样:

然后设计应该是这样:

如果觉得可行的话,评论留言一下你觉得应该写进这个APP的运维常用命令吧^_^,笔者暂时想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什么好的想法就狠狠的砸过来吧,笔者到时应该也会把这个写成一个项目放到github上,大家一起用嘛,开源才是王道,哈哈。

好吧,进入正题。 

我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署,绝对是一款颇让人惊艳的NUI框架。 

因为跨平台的,所以只写一遍代码,就可以同时生成安卓及IOS的APP,很酷吧。 

本文会带大家写一个Hello world并瞧一瞧Python版的2048的代码

kivy安装 

环境说明:笔者在用的是Python2.7.10 

这里仅介绍windows平台安装 

更新pip,setuptools

python -m pip install --upgrade pip wheel setuptools12

然后是安装所需要的依赖

python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \

kivy.deps.gstreamer --extra-index-url ple/123

值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,h

然后就是安装kivy了

python -m pip install kivy12

至此,安装就已经完毕了,值得注意的是64位系统没有开启虚拟化支持,在导入kivy的时候会报错,如果是64位系统就设置一下机器的BIOS,开启虚拟化支持吧。 

注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。

如果kivy在python中应该就能导入了。

按照世界惯例,我们”hello”一下吧。 

新建一个.py文件

from kivy.app import App

from kivy.uix.button importButton

class TestApp(App):

def build(self):

return Button(text='Hello,kivy')

TestApp().run()123456789

运行:

然后会弹出一个框,大概如下,点击”hello,kivy”会变颜色

点击窗口并按“F1”会这个窗口的一些属性

然后我们回过头看一看代码。

##导入App,然后让TestApp这个类继承

from kivy.app import App

##导入一个Button,运维有这个button,当你点击的时候才会有所反应

from kivy.uix.button importButton

###定义类,名字必须是xxxApp

class TestApp(App):

###build一个Button

def build(self):

###返回一个Button,文字内容是“Hello,kivy”

return Button(text='Hello,kivy')

##运行,因为继承了App,所以才有的run这个方法

TestApp().run()123456789101112131415

上面就是我们的Hello了 

在windows上运行当然没有什么太大的意义,怎么在安卓手机上运行才是我们想要的, 

这时我们需要一个编译环境。 

官方说明的环境,如下:

You’ll need:

A     linux computer or a virtual machine

Java

Python     2.7 (not 2.6.)

Jinja2     (python module)

Apache     ant

Android     SDK12345678

虽然官方提供了一个似乎还不错的虚拟机镜像,但是还是有很多内容需要翻出去,所以笔者在

当然你也可以下载官方镜像,因为第一次编译需要去国外下一大堆东西,所以请自备梯子。

Virtual Machine 

A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation: 

Kivy Buildozer VM 

Or select the Torrent

在笔者提供的镜像里,桌面上有一个dev_and,只要将上面写的代码,放入这个文件夹即可(当然也可以在其他目录,后面会讲到)。

cd Desktop/dev_and/12

初始化会在当前目录生成一个buildozer.spec文件 用于配置生成的apk相关信息

buildozer init12

修改buildozer.spec文件

vi buildozer.spec12

至少修改下面三项

# (str) Title of your application

title = helloworld

# (str) Package name

package.name = helloapp

# (str) Package domain (needed for android/ios packaging)

package.domain = youer.com123456789

然后注释

# (str) Application versioning (method 1)

#version.regex = __version__ = ['"](.*)['"]

#version.filename = %(source.dir)s/main.py

下面这行改为非注释

version = 1.2.0123456

最后我们生成我们需要的apk文件

buildozer -v android debug12

buildozer命令会在当前文件夹创建一个bin,该文件夹里面有我们想要的apk文件

helloapp-1.2.0-debug.apk

安装以后应该是这样

话说在编译的时候可能出现空间不足的情况,根据虚拟机的不同(vmware或virtualbox)自行扩容吧。

最后我们来瞧瞧简易版Python开发的2048这个游戏的源代码。 

先看效果图

试玩了一下,还是蛮流畅的,有兴趣的可以下载玩一下 

这个游戏代码虽然不长,但是还是蛮占篇幅的,所以简要的说明一下流程:

主要由三部分组成,一是素材,图片音频之类的文件,二是Python代码,三是kv文件,这个kv文件有点像html中的css。 

Python代码的文件名一般命名为main.py 

然后一定有一个叫做XXXApp的类,并继承App。 

比如该类叫做GameApp,那么该目录下的kv文件则必须为Game,如上图所示,如果不是,那么kv文件中的一些设定就不会生效。 

比如设定一个标签

Label:

id: time

text: 'xxxx'

font_size: 6012345

id为time,text文本内容为’xxxx’,然后字体为60 

好吧,点到为止吧,不过似乎什么都没点到~~~

从无到有做一个App,我想我会另起一篇文章吧。

关于安卓版2048源代码和2048程序代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

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

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


取消回复欢迎 发表评论:

分享到

温馨提示

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

联系我们反馈

立即下载