问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求java经典小项目代码 及思想 QQ:272545858

发布网友 发布时间:2023-07-12 12:22

我来回答

1个回答

热心网友 时间:2024-11-29 01:52

好吧,给你一个我写的贪吃蛇吧:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
public class 贪吃蛇 extends JFrame implements ActionListener, KeyListener,
Runnable {
private static final long serialVersionUID = 1L;
private JMenuBar 上面的菜单条子;
private JMenu 游戏菜单项, 分数菜单项;
private JMenuItem 开始游戏选项, 退出游戏选项, 最高分数选项;
private int 蛇长 = 6;
private Toolkit 默认声音工具;
private int 蛇长的中间量, 蛇头x, 蛇头y, 按键指令1上2下3左4右, 食物X坐标, 食物Y坐标, 食物存在否 = 0,
是否吃到食物 = 0, 刷帧时间;
private int 蛇的各模块x坐标[] = new int[50];
private int 蛇的各模块y坐标[] = new int[50];
private Thread 开始游戏线程 = null;
private int 分数 = 0;
private int 吃掉的食物 = 0;
private int 最高分数 = 0;
private Random r = new Random();
private Color c;
public void run() {
刷帧时间 = 500;
for (蛇长的中间量 = 0; 蛇长的中间量 <= 蛇长 - 1; 蛇长的中间量++) {
蛇的各模块x坐标[蛇长的中间量] = 90 - 蛇长的中间量 * 10;
蛇的各模块y坐标[蛇长的中间量] = 60;
}
蛇头x = 蛇的各模块x坐标[0];
蛇头y = 蛇的各模块y坐标[0];
按键指令1上2下3左4右 = 4;
while (开始游戏线程 != null) {
每帧执行();
try {
Thread.sleep(刷帧时间);
} catch (Exception ee) {
System.out.println(按键指令1上2下3左4右 + "");
}
}
}
public 贪吃蛇() {
setVisible(true);
上面的菜单条子 = new JMenuBar();
默认声音工具 = getToolkit();
游戏菜单项 = new JMenu("游戏");
开始游戏选项 = new JMenuItem("开始游戏");
退出游戏选项 = new JMenuItem("退出游戏");
分数菜单项 = new JMenu("积分排行");
最高分数选项 = new JMenuItem("最高记录");
分数菜单项.add(最高分数选项);
游戏菜单项.add(开始游戏选项);
游戏菜单项.add(退出游戏选项);
上面的菜单条子.add(游戏菜单项);
上面的菜单条子.add(分数菜单项);
开始游戏选项.addActionListener(this);
退出游戏选项.addActionListener(this);
addKeyListener(this);
最高分数选项.addActionListener(this);
KeyStroke 开始游戏快捷键 = KeyStroke.getKeyStroke('O',
InputEvent.CTRL_DOWN_MASK);
开始游戏选项.setAccelerator(开始游戏快捷键);
//
KeyStroke 退出游戏快捷键 = KeyStroke.getKeyStroke('X',
InputEvent.CTRL_DOWN_MASK);
退出游戏选项.setAccelerator(退出游戏快捷键);
setJMenuBar(上面的菜单条子);
setTitle("贪吃蛇");
setResizable(false);
setBounds(300, 200, 400, 400);
validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new 贪吃蛇();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == 开始游戏选项) {
蛇长 = 6;
分数 = 0;
吃掉的食物 = 0;
if (开始游戏线程 == null) {
开始游戏线程 = new Thread(this);
开始游戏线程.start();
} else if (开始游戏线程 != null) {
开始游戏线程 = null;
开始游戏线程 = new Thread(this);
开始游戏线程.start();
}
}
if (e.getSource() == 退出游戏选项) {
System.exit(0);
}
if (e.getSource() == 最高分数选项) {
JOptionPane.showMessageDialog(this, "最高记录为" + 最高分数 + "");
}
}
public void 每帧执行() {
挂没挂();
if (开始游戏线程 != null) {
if (是否吃到食物 == 0) {
刷新蛇各点();
} else {
蛇吃掉了食物方法();
}
if (蛇头x == 食物X坐标 && 蛇头y == 食物Y坐标) {
食物存在否 = 0;
是否吃到食物 = 1;
默认声音工具.beep();
c = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
}
if (食物存在否 == 0) {
食物存在否 = 1;
食物X坐标 = (int) Math.floor(Math.random() * 39) * 10;
食物Y坐标 = (int) Math.floor(Math.random() * 29) * 10 + 50;
}
this.repaint();
}
}
void 挂没挂() {
if (按键指令1上2下3左4右 == 4) {
蛇头x = 蛇头x + 10;
} else if (按键指令1上2下3左4右 == 3) {
蛇头x = 蛇头x - 10;
} else if (按键指令1上2下3左4右 == 2) {
蛇头y = 蛇头y + 10;
} else if (按键指令1上2下3左4右 == 1) {
蛇头y = 蛇头y - 10;
}
if (蛇头x < 0 || 蛇头x > 390 || 蛇头y < 50 || 蛇头y > 390) {
开始游戏线程 = null;
}
for (蛇长的中间量 = 1; 蛇长的中间量 < 蛇长; 蛇长的中间量++) {
if (蛇的各模块x坐标[蛇长的中间量] == 蛇头x && 蛇的各模块y坐标[蛇长的中间量] == 蛇头y) {
开始游戏线程 = null;
}
}
}
public void 蛇吃掉了食物方法() {
if (蛇长 < 50) {
蛇长++;
}
是否吃到食物--;
刷帧时间 = 刷帧时间 - 10;
刷新蛇各点();
分数 += 100;
if (最高分数 < 分数) {
最高分数 = 分数;
}
吃掉的食物++;
}
public void 刷新蛇各点() {
for (蛇长的中间量 = 蛇长 - 1; 蛇长的中间量 > 0; 蛇长的中间量--) {
蛇的各模块x坐标[蛇长的中间量] = 蛇的各模块x坐标[蛇长的中间量 - 1];
蛇的各模块y坐标[蛇长的中间量] = 蛇的各模块y坐标[蛇长的中间量 - 1];
}
if (按键指令1上2下3左4右 == 4) {
蛇的各模块x坐标[0] = 蛇的各模块x坐标[0] + 10;
}
if (按键指令1上2下3左4右 == 3) {
蛇的各模块x坐标[0] = 蛇的各模块x坐标[0] - 10;
}
if (按键指令1上2下3左4右 == 2) {
蛇的各模块y坐标[0] = 蛇的各模块y坐标[0] + 10;
}
if (按键指令1上2下3左4右 == 1) {
蛇的各模块y坐标[0] = 蛇的各模块y坐标[0] - 10;
}
}
public void keyPressed(KeyEvent e) {
if (开始游戏线程 != null) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
if (按键指令1上2下3左4右 != 2) {
按键指令1上2下3左4右 = 1;
每帧执行();
}
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
if (按键指令1上2下3左4右 != 1) {
按键指令1上2下3左4右 = 2;
每帧执行();
}
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (按键指令1上2下3左4右 != 4) {
按键指令1上2下3左4右 = 3;
每帧执行();
}
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if (按键指令1上2下3左4右 != 3) {
按键指令1上2下3左4右 = 4;
每帧执行();
}
}
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void paint(Graphics g) {
g.fillRect(0, 0, 400, 400);
g.setColor(Color.green);
for (蛇长的中间量 = 0; 蛇长的中间量 <= 蛇长 - 1; 蛇长的中间量++) {
g.fillRect(蛇的各模块x坐标[蛇长的中间量], 蛇的各模块y坐标[蛇长的中间量], 10, 10);
}

g.setColor(c);
g.fillRect(食物X坐标, 食物Y坐标, 10, 10);

g.setColor(Color.white);
g.drawString("当前 分数" + this.分数, 6, 60);
g.drawString("当前已吃食物数" + this.吃掉的食物, 6, 72);
}
}

看懂了基本就算是java入门了。

思想的话看Thinking in Java这本书,看时一定一定要有耐心,看不懂继续看,看完帮助很大

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕错过了糖筛怎么办 糖筛有哪些注意事项 怀孕几个月查唐筛 蔡家沟镇慈云寺 哈佳高铁高楞站多少平方米位置在那 超威电池生产日期怎么看 超威电池寿命一般多长时间 华晨宇鸟巢四面台10w+秒罄!!火星演唱会舞台概念图震撼发布! 手机连接160wifi电脑蓝屏使用160WiFi遇到问题应该如何解决 为什么手机wifi总是刚开启,锁屏就掉了。wifi设置里的休眠模式也是永久的... 建行卡为什么不能网上转账 学校发我们的建设银行卡一定要激活吗? 我打电话查余额说输入取钱密码... 2015香港巴塞尔艺术展门票可以到场买么?一天时间大概可以看多少内容... 香港艺术馆票价多少 日本什么时候进的耒阳 你的离开是我的宿命我不再抱怨什么爱情是什么歌? 异地出险+连环事故,编辑亲身经历告诉你如何淡定处理 参加中餐厅时,王俊凯的脖子上的东西让粉丝很纳闷,那究竟是什么东西? 七fb0ys王俊凯的所有东西 Win10系统下如何批量替换文件名|Win10系统下批量更改文件名的方法 武汉羲和世家什么时候后建成 融科花满庭属于哪个街道 青菱四期还建房是哪个村 Love Is Life 歌词 2022年河北高考分数线一本 河北高考一本线是多少分 狗狗打了疫苗一天以后狗狗吐了,还拉稀带血,这是为什么 怎么判断高压包坏了 chinese food读后感 一级注册计量师考试的含金量怎么样 指甲竖痕小时候自己用刀刮的 临沂最大的网约车公司 怎么设置苹果手机里的日历 初学小白求助miniDVD项目在java如何做?不是思路,是直接做好可以运行的... 亿尔康红外额温计如何 石头记为什么叫红楼梦? win7批量修改文件名、照片文件名的方法 麦吉丽产品怎么辨别真假 麦吉丽盒子上的编码怎么查? 麦吉丽怎么查真伪麦吉丽专柜哪个城市有 超品少主之地球篇txt全集下载 尹岐恢复少主职位了吗 卿卿日常五少主恢复少主之位了吗 美的空调,酷金大1,5购买时候,有没有脚架?我买的空调没有,如需要另加8... ...和修他们都是台湾人吗?所有演员?第3季大概有多少集呢? B2驾照从业资格证可以开以下哪几种货车? 形容被水一战的成语 b2从业资格证有哪些 与&quot;背水一战&quot;有关的成语大神们帮帮忙 我是B2驾驶证.正在增驾B1,同时又在学客运资格证,现在不知道资格证出来能... 人总犯困是怎么回事 英语里面,早餐,午餐,晚餐怎么说啊?