贪吃蛇小程序
自己已经运行过。没有问题!
第一个文件ShellMain.java
import javax.swing.JFrame;
public class ShellMain extends JFrame {
public ShellWin win;
public ShellMain()
{
this.win=new ShellWin();
this.setTitle("贪吃蛇");
this.setSize(800,800);
this.setVisible(true);
this.add(win);
this.setLocation(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ShellMain();
}
}
第二个文件ShellWin.java
import java.awt.Color;
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.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.text.BreakIterator;
import javax.crypto.spec.IvParameterSpec;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.text.html.CSS;
public class ShellWin extends JPanel implements ActionListener,Runnable,KeyListener{
JButton startGame=new JButton("开始");
JButton stopGame=new JButton("停止");
int fang;
int chang;
int fen=0;
int[] xs=new int[400];
int[] ys=new int[400];
int douX;int douY;
Thread nThread;
public ShellWin()
{
nThread=new Thread(this);
this.add(startGame);this.add(stopGame);
this.startGame.addActionListener(this);
this.addKeyListener(this);
造蛇();
造豆();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("分数:"+fen, 50, 50);
g.drawRect(100,100, 600, 600);
显示蛇(g);
显示豆(g);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==startGame)
{
this.requestFocus();
nThread.start();
this.repaint();
}
}
//能不能吃豆,能不能死
void 死()
{
System.out.println("死了!");
}
void 吃()
{
chang++;
this.fen+=100;
造豆();
}
boolean 能出界死吗()
{
if(xs[0]==70||xs[0]==700||ys[0]==70||ys[0]==700)
{
return true;
}
return false;
}
void 转向(int 新方向)
{
if(fang%2!=新方向%2)
{
fang=新方向;
}
}
boolean 吃自己了吗()
{
for (int i = 1; i < chang; i++) {
if(xs[0]==xs[i]&&ys[0]==ys[i])
{
return true;
}
}
return false;
}
boolean 能吃豆吗()
{
if(xs[0]==douX&&ys[0]==douY)
{
return true;
}
return false;
}
void 造蛇()
{
fang=2;chang=5;
for (int i = 0; i < chang; i++) {
xs[i]=400;
ys[i]=400+30*i;
}
}
void 造豆()
{
douX=30*(int)(Math.random()*19)+100;
douY=30*(int)(Math.random()*19)+100;
for (int i = 0; i < chang; i++) {
if(xs[i]==douX&&ys[i]==douY)
{
造豆();
return;
}
}
}
void 显示豆(Graphics g)
{
g.setColor(Color.RED);
g.fillOval(douX, douY, 30, 30);
}
void 爬()
{
for (int i = chang-1; i >0; i--) {
xs[i]=xs[i-1];
ys[i]=ys[i-1];
}
switch (fang) {
case 1:
xs[0]=xs[0]+30;
break;
case 2:
ys[0]=ys[0]-30;
break;
case 3:
xs[0]=xs[0]-30;
break;
case 4:
ys[0]=ys[0]+30;
break;
default:
break;
}
}
void 显示蛇(Graphics g)
{
for (int i = 0; i < chang; i++) {
g.setColor(Color.BLUE);
g.drawRect(xs[i], ys[i], 30, 30);
}
}
@Override
public void run() {
while(true)
{
try {
if(能吃豆吗())
{
吃();
}
if(能出界死吗())
{
死();
return;
}
if(吃自己了吗())
{
死();
return;
}
爬();
Thread.sleep(80);
repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
void 转向()
{
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
转向(2);
break;
case KeyEvent.VK_DOWN:
转向(4);
break;
case KeyEvent.VK_LEFT:
转向(3);
break;
case KeyEvent.VK_RIGHT:
转向(1);
break;
default:
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
分享到:
相关推荐
【贪吃蛇小程序源码】是一款基于微信小程序开发的简单而有趣的游戏应用。这款源码提供了完整的代码结构,便于开发者直接部署和使用,无需复杂的配置和设计,是学习微信小程序开发和游戏编程的一个良好起点。 在微信...
这个贪吃蛇小程序是利用STM32F103的性能开发的一个有趣的项目,旨在展示如何在嵌入式系统上实现游戏功能。 首先,我们要理解STM32F103的基本结构。它拥有高速的闪存、SRAM存储器,以及一系列的外设接口,如UART、...
**C语言OpenGL贪吃蛇小程序**是一门基于C语言实现的、使用OpenGL图形库开发的简单游戏项目。OpenGL是开放图形库,是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。这个小程序旨在帮助学习者理解和掌握...
《VC贪吃蛇小程序详解与开发实践》 贪吃蛇是一款经典的电子游戏,以其简单易上手、趣味性十足的特点深受玩家喜爱。在VC++环境下,利用MFC(Microsoft Foundation Classes)框架,我们可以构建出一个自己的贪吃蛇...
【VC 贪吃蛇小程序源代码】是一个基于Visual C++(VC)开发的小型游戏,它实现了经典的“贪吃蛇”玩法。贪吃蛇游戏是计算机游戏中的一种经典,玩家控制一条蛇在有限的区域内移动,通过吃食物来增长长度,同时避免撞...
本项目“基于C语言的贪吃蛇小程序”是为初学者设计的一个实践项目,旨在帮助他们通过实现一个经典游戏——贪吃蛇,来巩固C语言的基础知识和编程思维。 贪吃蛇游戏是一款简单而有趣的电子游戏,玩家需要控制一条蛇在...
一个C语言写的贪吃蛇代码 不是EXE程序 使用时需要自己生成程序运行
在这个“贪吃蛇小程序”中,开发者使用了C++编程语言,并且运用了链表的数据结构来实现游戏逻辑。 链表是一种线性数据结构,它的每个元素(节点)包含数据和指向下一个节点的指针。在贪吃蛇游戏中,链表非常适合...
本项目"Java做贪吃蛇小程序"旨在利用Java语言实现一个经典的休闲游戏——贪吃蛇,对于初学者来说,这是一个很好的实战练习,能够帮助理解和运用Java的基础知识,同时也可锻炼逻辑思维和问题解决能力。贪吃蛇游戏虽然...
《MFC贪吃蛇小程序深度解析》 在编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于构建Windows应用程序。而贪吃蛇游戏,作为一款经典的休闲游戏,深受广大程序员和玩家的喜爱。将MFC与...
使用C语言开发的贪吃蛇小游戏,贪吃蛇撞墙会死亡,本游戏一共分为4个关卡,每个关卡都有不同的规则
void SnackColor_Fresh (void) { cur = lhead->next; sEt_Color(SNACK_COLOR); while(cur->next!=NULL) { sEt_Cursor(cur->coord.X,cur->coord.Y); putchar(BL); cur = cur->next;...}//蛇身颜色的刷新
【贪吃蛇小程序——WinForm与C#的完美结合】 贪吃蛇是一款经典的电子游戏,其简单易上手的操作和不断挑战自我的玩法深受玩家喜爱。在这个项目中,我们将使用C#编程语言和Windows Forms(WinForm)框架来实现一个...
在“简单的Verilog贪吃蛇小程序”中,我们看到Verilog被用来实现一个游戏——贪吃蛇。这个程序的核心是通过Verilog代码来构建电路逻辑,使得游戏的运行能够在硬件平台上得以实现。 【贪吃蛇游戏逻辑】 贪吃蛇游戏...
【标题】:“window下利用C语言编写的贪吃蛇小程序”揭示了这是一个使用C语言编程在Windows操作系统环境下实现的经典游戏——贪吃蛇。C语言是一种基础且强大的编程语言,适用于开发系统级软件、游戏和各种应用程序。...
下载后是一个txt,txt内有百度云链接和直链 包含完整代码,是用eclipse写的,下载即可运行,当时是看了一个机构的网文,但是网文有点问题,所以按照思路自己撸了一个,新手可以参考下 如有问题,请联系邮箱:aliulf@...