贪吃蛇

使用pygame制作一个贪吃蛇的小游戏

◇◆丶佛笑我妖孽 提交于 2019-12-27 20:39:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 之前我们已经学习了如果使用pygame创建一个窗口,现在我们来学习使用pygame来制作一个经典的小游戏--贪吃蛇。 首先我们需要导入待使用的模块: import pygame, sys, random from pygame.locals import * pygame.locals 模块 包含pygame使用的各种常量,它的内容会被自动放入到 Pygame 模块的名字空间中。 模块导入之后我们可以先定义好会用到的颜色,根据大家的喜好定义: # 定义颜色 pinkColor = pygame.Color(255, 182, 193) blackColor = pygame.Color(0, 0, 0) whiteColor = pygame.Color(255, 255, 255) pygame.Color() 是用于描述颜色的对象, Color(name) -> Color Color(r, g, b , a) -> Color Color(rgbvalue) –>Color # Color对象的方法&属性 pygame.Color.r :获取或者设置Color对象的红色值 pygame.Color.g :获取或者设置Color对象的绿色值 pygame.Color.b :获取或者设置Color对象的蓝色值

贪吃蛇系列之四——蛇对象的创建

随声附和 提交于 2019-12-27 20:03:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一个项目中,我们已经在窗口上绘制出了一个蓝色的方块,在这个项目中,我们将开始对蛇开始进行编码,所以我们先创建一个类,叫做Snake,放在com.gulang.snake.entity的包下面。在看代码之前,我们先来做一些铺垫。首先我们分析一下蛇的构造,蛇的身体是一节一节的,每一节都是相同的结构,因此,我们需要将蛇的身体抽象出来,成一个类。这里呢我们采用了内部类的方式来实现。即下面的这部分代码: /** * 蛇的一节身体 * @author jiladeyouxiang@qq.com * */ class Body{ /** 蛇的身体的绘制的横坐标 */ private int x; /** 蛇的身体的绘制的纵坐标 */ private int y; /** * 构造一个蛇的身体节点 * @param x 绘制的横坐标 * @param y 绘制的纵坐标 */ public Body(int x, int y){ this.x = x; this.y = y; } /** * 绘制一个蛇身体的一个节点 * @param g */ public void drawMe(Graphics g){ //获得画笔原来的颜色 Color c = g.getColor(); //给画笔设置新的颜色 g.setColor

贪吃蛇系列之八——我是吃货我自豪

旧街凉风 提交于 2019-12-27 20:03:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一个项目中,我们已经把食物绘制在我们的游戏界面上了,那么在这次的项目中,我们就来把这个食物吃掉。好了,还是先来看代码: /** * 判断蛇有没有吃到食物的方法 * @param food 食物对象 * @return 如果蛇吃到食物则返回true,否则返回false */ public boolean isEatFood(){ Body head = snakeBody.getFirst(); Food food = gameView.getFood(); if(head.x == food.getX() && head.y == food.getY()){ return true; } return false; } /** * 蛇吃掉食物的方法 */ public void eatFood(){ //让原来的食物消失,并且产生一个新的食物 gameView.setFood(new Food(this)); } 我们为了完成蛇吃掉食物的逻辑,于是就在Snake类中添加了两个方法,就是上面的两个方法。isEatFood呢我们是用来判断蛇是不是吃到了食物的方法,我想其中的逻辑大家看一眼应该就能懂。eatFood方法呢我们是来处理蛇碰到了食物之后真正把食物吃下去的逻辑。在这里呢,大家发现了,我引用了一个新的对象

一步步教你怎么用python写贪吃蛇游戏

老子叫甜甜 提交于 2019-12-27 20:03:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),那再合适不过了🤣🤣🤣 先通过下面这个效果图来感受下吧! 1 环境 操作系统:Windows Python版本:3.7.3 2 需求分析 我们先来回顾下贪吃蛇中的游戏元素及游戏规则。 首先呢,需要有贪吃蛇、有食物;需要能控制贪吃蛇来上下移动获取食物;贪吃蛇在吃取食物后,自身长度增加,同时食物消失并随机生成新的食物;如果贪吃蛇触碰到四周墙壁或是触碰到自己身体时,则游戏结束。 游戏规则就是这么简单,接下来我们借助一个第三方库pygame来实现它。 Pygame是一个利用SDL库的游戏库, 是一组用来开发游戏软件的 Python 程序模块。 SDL(Simple DirectMedia Layer)是一个跨平台库,支持访问计算机多媒体硬件(声音、视频、输入等),SDL非常强大,但美中不足的是它是基于 C 语言的。 PyGame是 SDL 库的 Python 包装器(wrapper),Pygame 在SDL库的基础上提供了各种接口

贪吃蛇系列之二——游戏窗口的建立

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-27 19:27:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 下面,我们废话不多说,就开始我们的贪吃蛇小项目。首先,我们打开我们的Eclipse,孤狼用的呢是比较新的版本,Eclipse 4.2.0的,没有Eclipse工具的朋友呢,可以到Eclipse的官方网站 http://www.eclipse.org/platform 进行下载。在接下来的博文中,孤狼将分多个版本来逐步的完善我们的贪吃蛇游戏。 我们建立一个新的Java项目,Snake01,在这个版本中,我们将先将游戏的窗口创建出来,那么下面,我们就开始Coding吧。最为一名好的程序员,我们最好再一开始就养成比较好的编程习惯,学会建包就是一个好的开始。首先,我们创建游戏的主窗口类GameView类,并将这个类放在com.gulang.snake.view下面,如下图: 接下来,我们开始对GameView进行编码,大家直接看代码,我会在后面进行解释: package com.gulang.snake.view; import java.awt.Color; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; public class GameView extends

前端练手小项目——贪吃蛇

被刻印的时光 ゝ 提交于 2019-12-25 01:23:10
前端练手小项目——贪吃蛇 虽然不难 但是可以说 从头到尾都是自己想的!开心 下面说一下js方面的详细思路以及遇到的问题,独立写下来还是收获比较大 这里我的规则就是简化的版本,也就是随机出现食物,每次蛇吃到长度就加一。 〇、html css布局中需要注意的几个小点 game游戏框宽高必须设置为蛇小块宽高的整数倍,这样才能准确判断蛇是否会碰到边框; 其实这个游戏布局比较简单,主要在宽高的设置时要注意border之类的会影响盒子的实际宽高的情况,用 box-sizing=border-box; 也可以,自己算也可以; 这里列一下盒子基本模型以及对应的jQuery方法 width() - 设置或返回元素的宽度 height() - 设置或返回元素的高度 innerWidth() - 返回元素的宽度(包含 padding) innerHeight() - 返回元素的高度(包含 padding) outerWidth() - 返回元素的宽度(包含 padding + border) outerWidth(true) - 返回元素的宽度(包含 padding + border + margin) 这里蛇小块的定位都采用相对定位,在设置位置变化的时候直接用css的left top修改,一开始我用的offset().left来判断,但用这个修改有一个极大的问题,也就是它未定为就还在文档流中

基于C# WPF框架的贪吃蛇

流过昼夜 提交于 2019-12-21 00:02:39
游戏开始界面 游戏开始 共有两条蛇,吃到红色食物加1分,吃到绿色毒食物减1分,知道0不减; 碰到墙壁游戏结束,碰到对方游戏结束,碰到自己游戏结束 此游戏通过Canvas画布布局,通过C#代码实现 游戏主界面大小为1200*1000 <Window x:Class="贪吃蛇__.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:贪吃蛇__" mc:Ignorable="d" Title="贪吃蛇" Loaded="Window_Loaded" Height="700" Width="900"> <Canvas Name="BG" Width = "1200" Height = "1000"></Canvas> </Window> 全局声明: Random

用Java开发贪吃蛇游戏

南楼画角 提交于 2019-12-20 20:26:59
贪吃蛇游戏的设计步骤: Part 1:      设计游戏图纸   画出900*700的白色窗口   在窗口上添加画布   在画布上添加标题   在画布上添加黑色游戏区 Part 2:   放置静态的蛇:一个头、两个身体   加上开始提示:按空格键开始游戏   让蛇动起来:监听Timer事件,平移数据   实现游戏暂停   实现转向功能 Part 3:    添加食物   吃掉食物   添加死亡条件   实现“重新开始”功能   添加分数和长度 游戏图纸如下: 蛇及游戏框的素材如下: 图片下载地址 链接: https://pan.baidu.com/s/1jH6xnXc 密码:hqze Snake主类: 1 package snake; 2 3 import javax.swing.JFrame; 4 import javax.swing.JPanel; 5 6 public class Snake { 7 8 public static void main(String[] args) { 9 10 JFrame frame = new JFrame(); // 创建一个游戏界面的框架 11 frame.setBounds(10, 10, 900, 720); // 设置框架的大小 12 frame.setResizable(false); // 设置框架大小为不能改变 13 /

在OpenCV里玩贪吃蛇

 ̄綄美尐妖づ 提交于 2019-12-20 14:43:48
前段时间有一个大学生问我,学习OpenCV过程中,看代码都提不起兴趣,没有学习的动力,有没有什么方法既可以好玩,又能学习到知识。我一直在思考这个问题,在寻找好玩的方式,第一个想到就是游戏了。好吧,今天就来开发一个简单的游戏:贪吃蛇,不但很好玩,还可以学习到OpenCV的概念和函数的应用,以及学会键盘交互应用的过程。 游戏的实现过程,其实就是不断地更新屏幕显示,让每一帧数据产生变化,也就是有了动画的过程,再加上输入的响应,进行反馈。 接着我们来看一下贪吃蛇的玩法: 用游戏把子上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴,等到了一定的分数,就能过关,然后继续玩下一关。 通过上面的玩法,知道必须要有墙壁,有蛇,还有吃的东西,其它就是规则的判断了。 要显示整个游戏,先来创建一个窗口,这个窗口的区域就是一个蛇可以活动的区域,窗口边框就相当于墙,如果蛇碰到了就算游戏结束了。为了使用OpenCV等库,通过下面代码来导入所有使用到的库: import numpy as np import cv2 from matplotlib import pyplot as plt import random import 来源: CSDN 作者: caimouse 链接: https:/

Python实现贪吃蛇

女生的网名这么多〃 提交于 2019-12-20 04:44:17
代码简洁明了,各种注释让你轻松了解各个代码模块,复制粘贴即可实现 import pygame import time import numpy as np # 此模块包含游戏所需的常量 from pygame.locals import * # 设置棋盘的长宽 BOARDWIDTH = 48 BOARDHEIGHT = 30 # 分数 score = 1 class Food(object): def __init__(self): self.item = (4, 5) # 画出食物 def _draw(self, screen, i, j): color = 255, 0, 255 radius = 10 width = 10 # i:1---34 j:1---25 position = 10 + 20 * i, 10 + 20 * j # 画出半径为 10 的粉色实心圆 pygame.draw.circle(screen, color, position, radius, width) # 随机产生食物 def update(self, screen, enlarge, snack): if enlarge: self.item = np.random.randint(1, BOARDWIDTH - 2), np.random.randint(1, BOARDHEIGHT -