iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android Studio实现贪吃蛇小游戏
  • 195
分享到

Android Studio实现贪吃蛇小游戏

androidstudioandroid安卓安卓appandroid程序 2023-10-01 20:10:26 195人浏览 八月长安
摘要

项目目录 一、项目概述二、开发环境三、详细设计四、运行演示五、项目总结六、源码获取 一、项目概述 贪吃蛇是一款经典的街机游戏,不仅在电子游戏史上占有一席之地,也在很多人的童年回忆中留下了深

项目目录

一、项目概述

贪吃蛇是一款经典的街机游戏,不仅在电子游戏史上占有一席之地,也在很多人的童年回忆中留下了深刻的印象。在游戏中,玩家需要操纵一条蛇通过吃食物来增加自己的长度,同时要避免撞到墙或自己的身体。随着蛇不断吃食物,它的身体会越来越长,游戏的难度也会随之增加。贪吃蛇的游戏机制很简单,但是它具有很高的可玩性和挑战性,深受玩家喜爱。在现代计算机上,贪吃蛇已经经过了许多改进和升级,增加了更多的游戏元素和特性,例如多种模式,不同的难度级别,多人游戏等等。

本次实现的贪吃蛇小游戏在游戏机制中去除了墙壁和自己身体的碰撞限制,玩家操控贪吃蛇不断地在吃食物使自己变得强大。

二、开发环境

在这里插入图片描述

三、详细设计

定义的SnakeSpace类,继承父类View,定义了很多数学,在构造方法中initView(),方向默认向上,创建个snakeArray链表,存储当前的方块位置,我们将二维数组映射到一维数组,所以每个(x, y)变为x * width + y,showFood()是显示食物的小方块。

    private void initView(){        direction = DIRECTION_UP;        snakeArray = new LinkedList<Integer>();        snakeArray.add(6*100+16);        snakeArray.add(6*100+17);        snakeArray.add(6*100+18);        showFood();    }

Math.random()返回[0, 1)的随机数,我们乘以8,就是[0, 8),Math.round()函数返回一个数字四舍五入后最接近的整数。比如10.5返回11,10.4返回10这样。所以先生成一个食物坐标,如果链表中包含了这个食物坐标,则继续随机生成,最后将坐标再进行映射为snakeFood。

    private void showFood(){        int x = (int) Math.round(Math.random() * 8);        int y = (int) Math.round(Math.random() * 16);        while (snakeArray.contains(x * 100 + y)){            x = (int) Math.round(Math.random() * 8);            y = (int) Math.round(Math.random() * 16);        }        Log.e("SnakeSpace", "food pos = " + snakeFood);        snakeFood = x*100 + y;    }

onDraw(canvas canvas)函数非常核心,先获取到屏幕的宽和高,也就是分辨率。定义画笔对象paint,设置画笔粗细为4。画布对象canvas使用本画笔drawLine()绘制网格线。然后定义新的画笔paint2,设置画笔颜色为淡青色,使用双层for循环遍历网格,如果是贪吃蛇身体或者食物就画黑色的矩形, 如果是空闲块就画淡青色的矩形。

    @Override    protected void onDraw(Canvas canvas) {        int width = getWidth();        int height = getHeight();        int dx = width / 16;        Paint paint = new Paint();        paint.setStrokeWidth(4);        canvas.drawColor(0xaa87CEEB);        canvas.drawLine(0, 0, width, 0, paint);        canvas.drawLine(width, 0, width, height, paint);        canvas.drawLine(width, height, 0, height, paint);        canvas.drawLine(0, height, 0, 0, paint);        Paint paint2 = new Paint();        paint2.setColor(0xaaE1FFFF);        for (int i = 0; i < 16; i++){            for (int j = 0; j < 32; j++) {                // 如果是贪吃蛇身体或者食物就画黑色的矩形                if (snakeArray.contains(i*100+j) || snakeFood == (i*100+j)){                    canvas.drawRect((dx * i) + 1, (dx * j) + 1, (dx * i) + dx - 1, (dx * j) + dx - 1, paint);                }else{                    // 如果是空闲块就画淡青色的矩形                    canvas.drawRect((dx * i) + 1, (dx * j) + 1, (dx * i) + dx - 1, (dx * j) + dx - 1, paint2);                }            }        }        super.onDraw(canvas);    }

在这里插入图片描述

在MainActivity中执行 startTimer()方法,定义定时任务对象mTimerTask,控制snake进行move(),并且显示score,延迟1s后开始每0.5s执行上述方法。

    private fun startTimer(){        // 先停止计时        stopTimer()        // 计时器对象        mTimer = Timer()        // 定时任务对象        mTimerTask = object : TimerTask(){            override fun run() {                snake.move()                score?.post({                    score?.setText("" + (snake.snakeArray.size - 3))                })            }        }        // 延迟1s后开始每0.5s执行一次任务        mTimer!!.schedule(mTimerTask, 1000, 500)    }

move()方法主要是首先获取贪吃蛇的头部坐标,这里我们提到的坐标都是映射后的一维坐标。根据方向进行选择。向左如果没出界每次移动100,向上没出界移动1,向右是100,向下是1,移动后的坐标为firstIndex,我们将它加入链表头部,如果firstIndex等于snakeFood,说明移动的位置刚好吃掉食物,直接showFood()显示新的食物位置,否则removeLast()删除链表尾部元素,因为你头部前进一格,尾部必然减少一格。

 public void move(){        int firstIndex = snakeArray.getFirst();        switch (direction){            case DIRECTION_LEFT:                if (firstIndex >= 100){                    firstIndex -= 100;                }else{                    return;                }                break;            case DIRECTION_UP:                if (firstIndex%100 > 0){                    firstIndex -= 1;                }else{                    return;                }                break;            case DIRECTION_RIGHT:                if (firstIndex < 1500){                    firstIndex += 100;                }else{                    return;                }                break;            case DIRECTION_DOWN:                if (firstIndex%100 < 31){                    firstIndex += 1;                }else{                    return;                }                break;        }        snakeArray.addFirst(firstIndex);        if (firstIndex == snakeFood){            showFood();        }else{            snakeArray.removeLast();        }        postInvalidate();    }

四、运行演示

Android Studio实现贪吃蛇小游戏

五、项目总结

贪吃蛇是一款广受欢迎的编程练习项目。许多编程语言和平台都提供了贪吃蛇的编程实现教程,通过编写贪吃蛇游戏,学习者可以掌握很多计算机科学的基础知识,例如数据结构算法、图形界面设计等。总之,贪吃蛇是一款非常经典和有趣的游戏,它不仅提供了娱乐,也可以作为一个教育工具来帮助人们学习计算机科学和编程。

六、源码获取

关注公众号《萌新加油站》,后台回复:贪吃蛇

点此直接下载源码:👉Android Studio实现贪吃蛇小游戏


🚀这有你错过的精彩内容🚀
Android Studio实现五子棋小游戏
Android Studio实现知乎日报App
Android Studio实现文件管理器
Android Studio实现文艺阅读App
Android Studio实现多功能日记本

来源地址:https://blog.csdn.net/qq_42257666/article/details/131089241

--结束END--

本文标题: Android Studio实现贪吃蛇小游戏

本文链接: https://www.lsjlt.com/news/422429.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android Studio实现贪吃蛇小游戏
    项目目录 一、项目概述二、开发环境三、详细设计四、运行演示五、项目总结六、源码获取 一、项目概述 贪吃蛇是一款经典的街机游戏,不仅在电子游戏史上占有一席之地,也在很多人的童年回忆中留下了深...
    99+
    2023-10-01
    android studio android 安卓 安卓app android程序
  • JS实现贪吃蛇小游戏
    目录一、初始化结构二、渲染蛇的颜色 三、蛇的运动四、蛇死亡的判定方式 蛇有两种判定死亡的方式五、食物的创建六、蛇吃食物边长七、开始游戏功能八、暂停/继续游戏功能页面效果: 贪吃蛇游...
    99+
    2024-04-02
  • pygame实现贪吃蛇小游戏
    本文实例为大家分享了pygame实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 由于这段时间实在是太聊了,没什么事做,游戏也玩腻了,所以玩起来pygame。pygame是真的容...
    99+
    2024-04-02
  • C#实现贪吃蛇小游戏
    本文实例为大家分享了C#实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 之前一直想写一个贪吃蛇小游戏,上个周末终于有时间做了一个,现在和大家分享。 界面 界面比较简单,一个按钮...
    99+
    2024-04-02
  • Java+JFrame实现贪吃蛇小游戏
    分享一个Java贪吃蛇小游戏,主要用到的是Java的JFrame,适合初学者。 首先创建一个合适大小的窗口,我这里是900*720 package com.lzijin;     ...
    99+
    2024-04-02
  • 用JS实现贪吃蛇小游戏
    本文实例为大家分享了JS实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 效果图: 完整代码如下: HTML <!DOCTYPE html> <html la...
    99+
    2024-04-02
  • JS+Canvas实现贪吃蛇小游戏
    今天呢,主要和小伙伴们分享一下一个贪吃蛇游戏从构思到实现的过程~因为我不是很喜欢直接PO代码,所以只copy代码的童鞋们请出门左转不谢。 按理说canvas与其应用是老生常谈了,可我...
    99+
    2024-04-02
  • JavaScript实现贪吃蛇游戏
    本文实例为大家分享了JavaScript实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 通过JavaScript,我们可以实现贪吃蛇游戏,具体功能如下: (1)通过按上下左右键来...
    99+
    2024-04-02
  • Java实现贪吃蛇游戏
    下面是一个简单的Java实现贪吃蛇游戏的示例代码:```javaimport javax.swing.*;import java.a...
    99+
    2023-08-09
    Java
  • QT实现贪吃蛇游戏
    为了熟悉QT的相关知识,我用了大约8个小时的时间用QT再次写了一遍贪吃蛇。 因为QT的机制和平时写的程序流程不同,所以程序中可能没有遵守代码规范。 运行效果: 程序内除了实现贪吃蛇...
    99+
    2024-04-02
  • python实现简单贪吃蛇小游戏
    本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下 1. 导入游戏库 import pgzrun import random 2.游戏初始化 # 窗口...
    99+
    2024-04-02
  • js怎么实现贪吃蛇小游戏
    这篇文章将为大家详细讲解有关js怎么实现贪吃蛇小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例代码<!DOCTYPE html> <h...
    99+
    2024-04-02
  • java实现简单贪吃蛇小游戏
    本文实例为大家分享了java实现贪吃蛇小游戏,供大家参考,具体内容如下 有两个类,放在同一文件下下即可,背景图片,标题,蛇尾可自行更改 import java.awt.*; im...
    99+
    2024-04-02
  • pygame实现贪吃蛇游戏
    本文实例为大家分享了pygame实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 为了简化起见,游戏素材暂定为两张简单的图片(文中用的是30*30)。大家很方便就能制作。 背景也...
    99+
    2024-04-02
  • python实现贪吃蛇游戏
    文章目录 1、效果2、实现过程3、代码 1、效果 2、实现过程 导入 Pygame 和 random 模块。初始化 Pygame。设置游戏界面大小、背景颜色和游戏标题。定义颜色常量。...
    99+
    2023-09-29
    python 游戏 pygame
  • 如何实现贪吃蛇Python小游戏
    这篇文章主要介绍“如何实现贪吃蛇Python小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现贪吃蛇Python小游戏”文章能帮助大家解决问题。贪吃蛇Python小游戏(源码+注释+粘贴即...
    99+
    2023-07-05
  • 基于MFC实现贪吃蛇小游戏
    本文实例为大家分享了MFC实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 一、功能描述 (1)通过“START”、“PAUSE”、“EXIT”三个控件,控制游戏的开始、暂停和终...
    99+
    2024-04-02
  • C++实现简单贪吃蛇小游戏
    本文实例为大家分享了C++实现简单贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 1 贪吃蛇游戏原理 1.1 构造蛇身:定义一个坐标数组,存放的是蛇的每一节蛇身所在的坐标位置。 1...
    99+
    2024-04-02
  • javascript实现贪吃蛇小游戏思路
    javascript小游戏贪吃蛇实现思路讲解(完整代码实现),供大家参考,具体内容如下 效果流程 1、首先我们要操作的canvas <!doctype html> &...
    99+
    2024-04-02
  • Matlab怎么实现贪吃蛇小游戏
    小编给大家分享一下Matlab怎么实现贪吃蛇小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!补动图:没错这就有点类似贪吃蛇大作战里的蛇啦然后做出的改进包括:在...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作