贪吃蛇小游戏代码html,自制贪吃蛇小游戏代码

package game;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Game_Start extends JFrame{

JFrame frame = new JFrame();

JButton btn1 = new JButton("开始游戏");

JButton btn2 = new JButton("游戏介绍");

JButton btn3 = new JButton("退出游戏");

Image start = (new ImageIcon("src/icon/start.jpg")).getImage();

Font f = new Font("微软雅黑",Font.BOLD,30);

public Game_Start() {

setSize(1400,1200);

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

setResizable(false);

setTitle("贪吃蛇开始界面");

add(new Pane());

}

public class Pane extends JPanel{

public Pane() {

setLayout(null);

Button();

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new Operation();

dispose();

}

});

btn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JDialog dialog=new JDialog();

dialog.setSize(800,600);

dialog.setLocationRelativeTo(null);

dialog.setVisible(true);

dialog.setTitle("游戏介绍");

String strMsg1 = "____通过键盘的上下左右键控制小蛇的移动";

String strMsg2 = "____当小蛇吃到食物会增长身体一单位长度";

String strMsg3="____当蛇头碰到墙壁或身体则游戏结束";

String strMsg4="____点击空格游戏开始,游戏结束可点击空格重新开始游戏";

String strMsg = "

" + strMsg1 + "
" + strMsg2 + "
"+strMsg3+"
"+strMsg4+"";

JLabel label = new JLabel(strMsg);

label.setFont(f);

dialog.add(label);

}

});

btn3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

}

public void paintComponent(Graphics g) {

super.paintComponents(g);

g.drawImage(start,0,0,1400,1200,this);

}

public void Button() {

add(btn1);

add(btn2);

add(btn3);

btn1.setBounds(575,350,200,100);

btn2.setBounds(575,500,200,100);

btn3.setBounds(575,650,200,100);

btn1.setFont(f);

btn2.setFont(f);

btn3.setFont(f);

}

}

public static void main(String[]args) {

new Game_Start();

}

}

package game;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Random;

import javax.swing.*;

public class Operation extends JFrame {

public Operation() {

setSize(1400,1200);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setResizable(false);

setLocationRelativeTo(null);

setTitle("贪吃蛇小游戏");

add(new Panel());

}

public class Panel extends JPanel implements ActionListener, KeyListener {

Image up = (new ImageIcon("src/icon/up.png")).getImage();

Image down = (new ImageIcon("src/icon/down.png")).getImage();

Image left = (new ImageIcon("src/icon/left.png")).getImage();

Image right = (new ImageIcon("src/icon/right.png")).getImage();

Image body = (new ImageIcon("src/icon/body.png")).getImage();

Image food = (new ImageIcon("src/icon/food.png")).getImage();

Image gamebg = (new ImageIcon("src/icon/gamebg.jpg")).getImage();

String fx;

boolean isStart = false;

boolean isOver = false;

int len;

int[]snakex = new int[1400];

int[]snakey = new int[1200];

Timer timer = new Timer(100,this);

int foodx;

int foody;

Random random = new Random();

int score = 0;

public Panel() {

Snake();

timer.start();

this.setFocusable(true);

this.addKeyListener(this);

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

g.setColor(Color.ORANGE);

g.setFont(new Font("黑体",Font.BOLD,70));

g.drawImage(gamebg,0,0,1400,1200,this);

if(fx == "U") {

g.drawImage(up, snakex[0], snakey[0], 50, 50, this);

}else if(fx == "D"){

g.drawImage(down, snakex[0], snakey[0], 50, 50, this);

}else if(fx == "L") {

g.drawImage(left, snakex[0], snakey[0], 50, 50, this);

}else if(fx == "R") {

g.drawImage(right, snakex[0], snakey[0], 50, 50, this);

}

for(int i = 1;i

g.drawImage(body,snakex[i],snakey[i],50,50,this);

}

g.drawImage(food, foodx, foody, 30, 30, this);

g.drawString("分数: "+score, 1000, 100);

if(isStart == false) {

g.drawString("按下空格键开始游戏",380,600);

}

if(isOver == true) {

g.drawString("按下空格键开始游戏", 380, 600);

}

}

public void Snake() {

len = 3;

fx = "R";

score = 0;

snakex[0] = 200;

snakey[0] = 40;

snakex[1] = 160;

snakey[1] = 40;

snakex[2] = 120;

snakey[2] = 40;

foodx = 40*random.nextInt(31);

foody = 40*random.nextInt(28);

}

public void actionPerformed(ActionEvent e) {

if(isStart&&!isOver) {

for(int i = len-1;i>0;i--) {

snakex[i] = snakex[i-1];

snakey[i] = snakey[i-1];

}

if(snakex[0] == foodx && snakey[0] == foody) {

len++;

score++;

foodx = 40*random.nextInt(31);

foody = 40*random.nextInt(28);

for(int i = len-1;i>0;i--) {

snakex[i] = snakex[i-1];

snakey[i] = snakey[i-1];}

}

if(fx == "R") {

snakex[0] += 40;

}else if(fx == "L") {

snakex[0] -= 40;

}else if(fx == "U") {

snakey[0] -= 40;

}else if(fx == "D") {

snakey[0] += 40;

}

for(int i = 1;i

if(snakex[i] == snakex[0] && snakey[i] == snakey[0]||snakex[0]>1380||snakex[0]<0|| snakey[0]<0 || snakey[0]>1120) {

isOver = true;

}

}

repaint();

}

timer.start();

}

public void keyPressed(KeyEvent e) {

int keyCode = e.getKeyCode();

if(keyCode == KeyEvent.VK_SPACE) {

if(isOver) {

isOver = false;

Snake();

}

isStart = !isStart;

repaint();

}else if (keyCode == KeyEvent.VK_LEFT && fx! = "R"){

fx="L";

}else if (keyCode == KeyEvent.VK_DOWN && fx! = "U"){

fx = "D";

}else if(keyCode == KeyEvent.VK_UP && fx! = "D") {

fx = "U";

}else if(keyCode == KeyEvent.VK_RIGHT && fx! = "L") {

fx = "R";

}

}

public void keyReleased(KeyEvent e) {

}

public void keyTyped(KeyEvent e) {

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的Python贪吃蛇游戏代码,希望能帮到你: ```python import pygame import random # 初始化 pygame.init() # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (255, 0, 0) # 设置窗口大小 size = (500, 500) screen = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption("贪吃蛇") # 坐标值设置 block_size = 10 snake_speed = 15 # 字体设置 font = pygame.font.SysFont(None, 25) # 输出文字 def message(msg, color): text = font.render(msg, True, color) screen.blit(text, [size[0]/6, size[1]/3]) # 绘制蛇 def drawSnake(snake_block, snake_list): for x in snake_list: pygame.draw.rect(screen, BLACK, [x[0], x[1], snake_block, snake_block]) # 主函数 def gameLoop(): game_over = False game_close = False # 初始化贪吃蛇位置和长度 x1 = size[0]/2 y1 = size[1]/2 x1_change = 0 y1_change = 0 snake_List = [] Length_of_snake = 1 # 食物随机生成位置 foodx = round(random.randrange(0, size[0]-block_size)/10.0)*10.0 foody = round(random.randrange(0, size[1]-block_size)/10.0)*10.0 # 游戏循环 while not game_over: # 游戏结束 while game_close == True: screen.fill(WHITE) message("你输了!按 Q 退出或 R 重新开始", RED) pygame.display.update() # 重新开始或退出游戏 for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_r: gameLoop() # 控制贪吃蛇移动速度 for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -block_size y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = block_size y1_change = 0 elif event.key == pygame.K_UP: y1_change = -block_size x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = block_size x1_change = 0 # 判断贪吃蛇是否出界 if x1 >= size[0] or x1 < 0 or y1 >= size[1] or y1 < 0: game_close = True # 更新贪吃蛇的坐标 x1 += x1_change y1 += y1_change screen.fill(WHITE) # 绘制食物 pygame.draw.rect(screen, GREEN, [foodx, foody, block_size, block_size]) # 贪吃蛇的身体 snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > Length_of_snake: del snake_List[0] # 判断贪吃蛇是否吃到食物 for x in snake_List[:-1]: if x == snake_Head: game_close = True # 绘制贪吃蛇 drawSnake(block_size, snake_List) pygame.display.update() # 判断是否吃到食物 if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, size[0]-block_size)/10.0)*10.0 foody = round(random.randrange(0, size[1]-block_size)/10.0)*10.0 Length_of_snake += 1 # 控制贪吃蛇移动速度 clock = pygame.time.Clock() clock.tick(snake_speed) # 退出游戏 pygame.quit() quit() # 开始游戏 gameLoop() ``` 这个代码是基于Python Pygame库编写的,可以在Python环境下直接运行。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值