中企动力做网站的价格/seo综合查询站长工具怎么用

中企动力做网站的价格,seo综合查询站长工具怎么用,东莞深圳网站建设,济南学生网站建设求职项目下载 https://download.csdn.net/download/AnalogElectronic/90421306 项目结构 就是通过android studio 建空项目,改下MainActivity.kt的内容就完事了 ctrlshiftalts 看项目结构如下 核心代码 MainActivity.kt package com.example.snakegame1// MainA…

项目下载

https://download.csdn.net/download/AnalogElectronic/90421306
在这里插入图片描述

项目结构

在这里插入图片描述
就是通过android studio 建空项目,改下MainActivity.kt的内容就完事了

ctrl+shift+alt+s 看项目结构如下
在这里插入图片描述

核心代码

MainActivity.kt

package com.example.snakegame1// MainActivity.kt
import android.content.ContentValues.TAG
import android.view.KeyEvent
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background
import androidx.compose.foundation.focusable
import androidx.compose.foundation.gestures.detectDragGestures
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.key.*
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.delay
import java.util.*
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.input.pointer.pointerInput
import kotlin.math.abs
import kotlin.math.roundToInt// 游戏配置常量
const val CELL_SIZE = 30f      // 每个网格单元大小
const val GRID_SIZE = 20       // 网格行列数
const val GAME_SPEED = 150L    // 游戏刷新速度(毫秒)// 方向枚举类
enum class Direction { UP, DOWN, LEFT, RIGHT }// 坐标数据类
data class Point(val x: Int, val y: Int)class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {SnakeGame()}}
}@Composable
fun SnakeGame() {// 游戏状态控制var isPlaying by remember { mutableStateOf(true) }var score by remember { mutableStateOf(0) }Log.d(TAG, "游戏是否启动: $isPlaying")// 蛇的初始状态val snake = remember {mutableStateOf(Snake(body = listOf(Point(GRID_SIZE/2, GRID_SIZE/2)),direction = Direction.RIGHT))}// 食物位置var food by remember { mutableStateOf(generateFood(snake.value.body)) }// 游戏循环控制LaunchedEffect(key1 = isPlaying) {while (isPlaying) {delay(GAME_SPEED)snake.value = snake.value.move()// 检测是否吃到食物if (snake.value.body.first() == food) {score += 10food = generateFood(snake.value.body)snake.value = snake.value.grow()}// 检测碰撞if (checkCollision(snake.value.body)) {isPlaying = false}}}Column(modifier = Modifier.fillMaxSize().background(Color(0xFF2B2B2B)).pointerInput(Unit) {// 处理触摸或鼠标事件detectDragGestures { _, dragAmount ->// 根据拖动方向改变蛇的方向if (abs(dragAmount.x) > abs(dragAmount.y)) {if (dragAmount.x > 0) {snake.value = snake.value.turn(Direction.RIGHT)} else {snake.value = snake.value.turn(Direction.LEFT)}} else {if (dragAmount.y > 0) {snake.value = snake.value.turn(Direction.DOWN)} else {snake.value = snake.value.turn(Direction.UP)}}}}.focusable(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {// 游戏画布Canvas(modifier = Modifier.size((CELL_SIZE * GRID_SIZE).dp).background(Color.Black)) {// 绘制网格线for (i in 0..GRID_SIZE) {drawLine(color = Color.Gray.copy(alpha = 0.3f),start = Offset(i * CELL_SIZE, 0f),end = Offset(i * CELL_SIZE, size.height),strokeWidth = 1f)drawLine(color = Color.Gray.copy(alpha = 0.3f),start = Offset(0f, i * CELL_SIZE),end = Offset(size.width, i * CELL_SIZE),strokeWidth = 1f)}// 绘制食物drawCircle(color = Color.Red,center = Offset(food.x * CELL_SIZE + CELL_SIZE / 2,food.y * CELL_SIZE + CELL_SIZE / 2),radius = CELL_SIZE / 3)// 绘制蛇身snake.value.body.forEachIndexed { index, point ->val color = if (index == 0) Color.Green else Color(0xFF4CAF50)drawCircle(color = color,center = Offset(point.x * CELL_SIZE + CELL_SIZE / 2,point.y * CELL_SIZE + CELL_SIZE / 2),radius = CELL_SIZE / 2.5f,style = Stroke(width = 3f))}}// 重新开始按钮if (!isPlaying) {Button(onClick = {// 重置游戏状态isPlaying = truescore = 0snake.value = Snake(body = listOf(Point(GRID_SIZE/2, GRID_SIZE/2)),direction = Direction.RIGHT)food = generateFood(snake.value.body)},modifier = Modifier.padding(8.dp)) {Text("重新开始")}}}
}// 蛇类定义
class Snake(val body: List<Point>,val direction: Direction
) {// 移动方法fun move(): Snake {val head = body.first()val newHead = when (direction) {Direction.UP -> head.copy(y = head.y - 1)Direction.DOWN -> head.copy(y = head.y + 1)Direction.LEFT -> head.copy(x = head.x - 1)Direction.RIGHT -> head.copy(x = head.x + 1)}return copy(body = listOf(newHead) + body.dropLast(1))}// 转向方法fun turn(newDirection: Direction): Snake {// 禁止反向移动if ((direction == Direction.UP && newDirection == Direction.DOWN) ||(direction == Direction.DOWN && newDirection == Direction.UP) ||(direction == Direction.LEFT && newDirection == Direction.RIGHT) ||(direction == Direction.RIGHT && newDirection == Direction.LEFT)) {return this}return copy(direction = newDirection)}// 增长方法fun grow(): Snake {val tail = body.last()val newTail = when (direction) {Direction.UP -> tail.copy(y = tail.y + 1)Direction.DOWN -> tail.copy(y = tail.y - 1)Direction.LEFT -> tail.copy(x = tail.x + 1)Direction.RIGHT -> tail.copy(x = tail.x - 1)}return copy(body = body + newTail)}private fun copy(body: List<Point> = this.body,direction: Direction = this.direction) = Snake(body, direction)
}// 生成食物位置
fun generateFood(snakeBody: List<Point>): Point {val random = Random()while (true) {val newFood = Point(random.nextInt(GRID_SIZE),random.nextInt(GRID_SIZE))if (newFood !in snakeBody) return newFood}
}// 碰撞检测
fun checkCollision(body: List<Point>): Boolean {val head = body.first()return head.x < 0 || head.x >= GRID_SIZE ||head.y < 0 || head.y >= GRID_SIZE ||head in body.drop(1)
}

实现效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据库系统概论】数据库设计

7.1 数据库设计概述 定义 数据库设计是指对于一个给定的应用环境&#xff0c;构造&#xff08;设计&#xff09; 优化的 数据库模式、内模式和外模式&#xff0c;并据此建立数据库及其 应用系统 &#xff0c;使之能够有效地存储和管理数据&#xff0c;满足各种用户的应用需求…

kafka-保姆级配置说明(producer)

配置说明的最后一部分&#xff1b; ##指定kafka集群的列表&#xff0c;以“,”分割&#xff0c;格式&#xff1a;“host:port,host:port” ##此列表用于producer&#xff08;consumer&#xff09;初始化连接使用&#xff0c;server列表可以为kafka集群的子集 ##通过此servers列…

PHP2(WEB)

##解题思路 打开页面什么线索都没有&#xff0c;目录扫描只是扫出来一个index.php&#xff0c;而源代码没有东西&#xff0c;且/robots.txt是不允许访问的 于是一番查询后发现&#xff0c;有个index.phps的文件路径&#xff0c;里头写着一段php的逻辑&#xff0c;对url的id参数…

VisActor/VTable - 快速搭建表格

VTable源于VisActor体系&#xff0c;该体系是从字节跳动大量可视化场景沉淀而来&#xff0c;旨在提供面向叙事的智能可视化解决方案。VisActor包括渲染引擎、可视化语法、数据分析组件、图表组件、表格组件、GIS组件、图可视化组件、智能组件等多个模块&#xff0c;以及周边生态…

2025年02月21日Github流行趋势

项目名称&#xff1a;source-sdk-2013 项目地址url&#xff1a;https://github.com/ValveSoftware/source-sdk-2013项目语言&#xff1a;C历史star数&#xff1a;7343今日star数&#xff1a;929项目维护者&#xff1a;JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【简单】209.长度最小的子数组

题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回0。 示例 1&#xff1a; 输入&am…

【STM32】内存管理

【STM32】内存管理 文章目录 【STM32】内存管理1、内存管理简介疑问&#xff1a;为啥不用标准的 C 库自带的内存管理算法&#xff1f;2、分块式内存管理&#xff08;掌握&#xff09;分配方向分配原理释放原理分块内存管理 管理内存情况 3、内存管理使用&#xff08;掌握&#…

2025年- G17-Lc91-409.最长回文-java版

1.题目描述 2.思路 思路1: 判断一个字符串中的字母个数是否是偶数个。 遍历字符串&#xff0c;检查每个字符是否是字母&#xff08;可以通过 Character.isLetter() 来判断&#xff09;。 累加字母的个数。 最后判断字母的个数是否是偶数。 思路2: 这段 Java 代码的作用是 统…

SpringBoot+Mybatis-Plus实现动态数据源

目录 一、前言二、代码实现1&#xff09;工程结构2&#xff09;相关依赖3&#xff09;数据源拦截切面4&#xff09;动态数据源切换5&#xff09;核心配置类6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;动态数据源切换执行流程 四、声明式事务导…

玩转 Java 与 Python 交互,JEP 库来助力

文章目录 玩转 Java 与 Python 交互&#xff0c;JEP 库来助力一、背景介绍二、JEP 库是什么&#xff1f;三、如何安装 JEP 库&#xff1f;四、JEP 库的简单使用方法五、JEP 库的实际应用场景场景 1&#xff1a;数据处理场景 2&#xff1a;机器学习场景 3&#xff1a;科学计算场…

Qt常用控件之日历QCalendarWidget

日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几&#xff08;影响日历的第一列是周几&#xff09;。gridVisible是否显示日历…

JAVA最新版本详细安装教程(附安装包)

目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内&#xff0c;右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑&#xff0c;点击【属性】 5.下滑滚动条&…

基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

三、linux字符驱动详解

在上一节完成NFS开发环境的搭建后&#xff0c;本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分&#xff0c;主要负责管理与字符设备&#xff08;如串口、键盘等&#xff09;的交互&#xff0c;并为用户空间程序提供统一的读写操作接口。 驱动代码…

重学SpringBoot3-Spring Retry实践

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-Spring Retry实践 1. 简介2. 环境准备3. 使用方式 3.1 注解方式 基础使用自定义重试策略失败恢复机制重试和失败恢复效果注意事项 3.2 编程式使用3.3 监听重试过程 监…

计算机视觉行业洞察--影像行业系列第一期

计算机视觉行业产业链的上下游构成相对清晰&#xff0c;从基础技术研发到具体应用场景的多个环节相对成熟。 以下是我结合VisionChina经历和行业龙头企业对计算机视觉行业产业链上下游的拆解总结。 上下游总结 上游产业链分为软硬件两类&#xff0c;视觉的硬件主要指芯片、…

Spring事务原理 二

在上一篇博文《Spring事务原理 一》中&#xff0c;我们熟悉了Spring声明式事务的AOP原理&#xff0c;以及事务执行的大体流程。 本文中&#xff0c;介绍了Spring事务的核心组件、传播行为的源码实现。下一篇中&#xff0c;我们将结合案例&#xff0c;来讲解实战中有关事务的易…

逻辑函数的神经网络实现

1.单层感知器实现基本逻辑函数 先给大家抛出一道例题 &#xff08;一&#xff09;种类 a.OR函数 目标&#xff1a;当至少一个输入为1时&#xff0c;输出1&#xff1b;否则输出0。 权重设置&#xff1a; 输入权重&#xff1a;所有 wi1&#xff08;i1,2,...,m&#xff09;。…

SF-HCI-SAP问题收集1

最近在做HCI的集成&#xff0c;是S4的环境&#xff0c;发现很多东西都跑不通&#xff0c;今天开始收集一下错误点 如果下图冲从0001变成0010&#xff0c;sfiom_rprq_osi表就会存数据&#xff0c;系统检查到此表就会报错&#xff0c;这个选项的作用就是自定义信息类型也能更新&a…

06排序 + 查找(D1_排序(D1_基础学习))

目录 学习预热&#xff1a;基础知识 一、什么是排序 二、为什么要排序 三、排序的稳定性 四、排序稳定性的意义 五、排序分类方式 方式一&#xff1a;内外分类 方式二&#xff1a;比较分类 六、排序算法性能评估 1. 算法的时间复杂度 2. 算法的空间复杂度 七、知识小…