java小游戏源代码(Java 小游戏源代码合集)
swdejp 2026-06-26 07:40 132 浏览 0 评论
一、贪吃蛇
方向键控制,吃到食物变长,撞墙或撞自己结束。空格暂停,R 键重开。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.LinkedList;
import java.util.Random;
public class Snake extends JPanel implements ActionListener {
static final int SIZE = 25, COLS = 30, ROWS = 22;
LinkedList<Point> snake = new LinkedList<>();
Point food;
char dir = 'R';
boolean run = true, pause = false;
int score;
Random rnd = new Random();
Snake() {
setPreferredSize(new Dimension(SIZE*COLS, SIZE*ROWS));
setBackground(new Color(30,30,30));
setFocusable(true);
int cx=COLS/2, cy=ROWS/2;
for(int i=2;i>=0;i--) snake.add(new Point(cx-i,cy));
spawn();
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int k=e.getKeyCode();
if(k==KeyEvent.VK_UP||k==KeyEvent.VK_W) {if(dir!='D')dir='U';}
if(k==KeyEvent.VK_DOWN||k==KeyEvent.VK_S) {if(dir!='U')dir='D';}
if(k==KeyEvent.VK_LEFT||k==KeyEvent.VK_A) {if(dir!='R')dir='L';}
if(k==KeyEvent.VK_RIGHT||k==KeyEvent.VK_D) {if(dir!='L')dir='R';}
if(k==KeyEvent.VK_SPACE) pause=!pause;
if(k==KeyEvent.VK_R) restart();
}
});
new Timer(100,this).start();
}
void spawn(){ do{food=new Point(rnd.nextInt(COLS),rnd.nextInt(ROWS));}while(snake.contains(food)); }
void restart(){ snake.clear(); int cx=COLS/2,cy=ROWS/2;
for(int i=2;i>=0;i--) snake.add(new Point(cx-i,cy));
dir='R';run=true;pause=false;score=0;spawn(); }
public void actionPerformed(ActionEvent e){
if(!run||pause)return;
Point h=snake.getFirst(); int nx=h.x,ny=h.y;
switch(dir){case'U':ny--;break;case'D':ny++;break;case'L':nx--;break;case'R':nx++;}
if(nx<0||nx>=COLS||ny<0||ny>=ROWS){run=false;((Timer)e.getSource()).stop();repaint();return;}
Point nh=new Point(nx,ny);
if(snake.contains(nh)&&!nh.equals(snake.getLast())){run=false;((Timer)e.getSource()).stop();repaint();return;}
snake.addFirst(nh);
if(nh.equals(food)){score+=10;spawn();}else snake.removeLast();
repaint();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(new Color(45,45,45));
for(int x=0;x<=COLS;x++)g.drawLine(x*SIZE,0,x*SIZE,SIZE*ROWS);
for(int y=0;y<=ROWS;y++)g.drawLine(0,y*SIZE,SIZE*COLS,y*SIZE);
g.setColor(new Color(255,80,80));
g.fillOval(food.x*SIZE+2,food.y*SIZE+2,SIZE-4,SIZE-4);
for(int i=0;i<snake.size();i++){ Point p=snake.get(i);
if(i==0)g.setColor(new Color(100,200,100));
else{int gv=180-Math.min(i*3,100);g.setColor(new Color(60,gv,60));}
g.fillRoundRect(p.x*SIZE+1,p.y*SIZE+1,SIZE-2,SIZE-2,6,6);
}
g.setColor(new Color(255,255,255,180));g.setFont(new Font("",0,14));
g.drawString("得分:"+score,12,22);
if(pause)g.drawString("[暂停]",SIZE*COLS/2-30,22);
if(!run){g.setColor(new Color(0,0,0,160));g.fillRect(0,0,SIZE*COLS,SIZE*ROWS);
g.setColor(Color.WHITE);g.setFont(new Font("",1,28));g.drawString("游戏结束",SIZE*COLS/2-56,SIZE*ROWS/2-10);
g.setFont(new Font("",0,16));g.drawString("按R重新开始",SIZE*COLS/2-48,SIZE*ROWS/2+20);}
}
public static void main(String[]a){SwingUtilities.invokeLater(()->{
JFrame f=new JFrame("贪吃蛇");f.setDefaultCloseOperation(3);f.setResizable(false);
Snake s=new Snake();f.add(s);f.pack();f.setLocationRelativeTo(null);f.setVisible(true);
});}
}- 上一篇:新手自己用u盘怎么装系统
- 下一篇:电脑怎么恢复出厂设置
相关推荐
- 怎么样设置电脑开机密码
-
怎么样设置电脑开机密码,打开设置,进入账户,点登录选项,选择密码并添加。输入新密码、确认密码和提示后保存,下次开机就要输入。别把提示写成真正密码,别人看到提示就能猜出来。公司电脑改密码要按Ctrl+A...
- u盘格式化有写保护怎么办
-
U盘格式化提示写保护,先看U盘侧边有没有小锁扣,有就拨到解锁位置。没有锁扣时,按Win+R输入diskpart,依次输入listdisk、selectdisk编号、attributesdisk...
- 电脑硬盘如何分盘
-
右键此电脑,点管理,进入磁盘管理。右键已有分区选压缩卷,输入要分出的容量,再在未分配空间上右键新建简单卷。分盘前把重要文件拷走,别动带系统、恢复字样的小分区,避免开不了机。
- 电脑没有声音怎么办
-
电脑没声音,先点右下角喇叭,确认输出设备选的是扬声器或耳机。再右键开始菜单进设备管理器,查看声音设备有没有感叹号。驱动异常就卸载设备并重启,系统会重新安装声卡驱动。
- 电脑开不了机怎么办如何处理
-
电脑开不了机,先看电源灯。完全不亮就换插座、检查电源线;亮灯黑屏就拔掉U盘和外接设备再开。能看到品牌画面进不了桌面,连续强制关机三次,进自动修复后点启动修复,资料盘先别格式化。
- u盘不能识别了怎么修复
-
U盘不能识别了怎么修复,先换一个接口,台式机优先插主机后面。还是没反应,右键此电脑进管理,打开磁盘管理,看有没有无盘符的磁盘。有就更改盘符。连容量都不显示,多半是硬件损坏,别反复格式化。
- 如何驱动打印机在电脑上
-
如何驱动打印机在电脑上,先把打印机接好电源和数据线,再打开设置里的打印机和扫描仪,点添加设备。系统找不到时,去打印机品牌官网下载对应型号驱动。别随便装通用驱动,能打印不代表扫描功能也能用。
- 网页无法访问怎么办
-
网页无法访问,先换一个网站测试。所有网页都打不开,按Win+R输入cmd,执行ipconfig/flushdns清理缓存,再重启路由器。只有一个网站打不开,就换浏览器或清理该网站缓存。
- 如何安装音频设备
-
如何安装音频设备,先把耳机、音箱或外置声卡接到电脑,再进设置里的声音页面选择输出设备。设备不显示,就打开设备管理器,更新声卡驱动。装好后播放音乐测试。插错孔最常见,台式机绿色口通常接音箱。
- windows7还能用吗
-
Windows7还能开机运行旧软件,但联网使用安全风险高,很多新浏览器和驱动已经不再适配。只做离线打印、旧设备控制可以继续用;经常上网、登录网银或保存重要资料,换到新系统更稳。
- 如何用u盘重装系统
-
如何用U盘重装系统,先把U盘做成启动盘,再把电脑重要资料备份到别的盘。插上U盘开机,连续按F12或Esc选择U盘启动。进入安装界面后选系统盘格式化,再点下一步。中途别拔U盘,也别断电。
- 雨林木风系统安全吗
-
雨林木风系统安全吗,拿来临时装机能用,但不适合放重要资料的电脑。它属于第三方封装系统,里面改过哪些设置、带了哪些软件,用户很难看清。办公、网银、存照片的电脑,尽量用原版系统镜像,少碰来路不明的安装包。
- 苹果越狱有什么坏处吗
-
苹果越狱有什么坏处吗,主要是安全下降、系统更新麻烦,支付和银行类软件还会报风险。越狱后能装插件,但插件来源乱,手机卡顿、耗电、闪退都更常见。只是想换主题或装小工具,不值得拿账号安全去换。
- 如何重装系统最简单的方法
-
如何重装系统最简单的方法,就是用启动U盘安装。先把桌面和C盘资料拷走,再插上U盘,开机连续按F12或Esc选择U盘启动。进入安装界面后选系统盘格式化,点下一步等待完成。中途别断电,也别拔U盘。
- 电子邮件地址怎么写
-
电子邮件地址按用户名加邮箱后缀来写,中间用@连接,例如QQ邮箱就是QQ号加邮箱后缀。不要把空格、中文标点写进去。填表时复制邮箱地址最稳,手打时容易把点号和@写错。
欢迎 你 发表评论:
- 一周热门
-
-
2010新三国演义免费观看_新三国演义电视剧2010版
-
奶奶微信上有77万条未读消息
-
蜜桃成熟时3d在线
-
寒战1994
-
正道无敌 电视剧_正道无敌 电视剧演员介绍
-
旺角的天空III终极边缘
-
手机计步器其实是个隐形地震仪器吗
-
女子上班收到女儿高考成绩激动不已
-
“名媛碎尸案”被害人母亲涉嫌诈骗
-
你对AI脸产生生理性厌恶了吗
-
93岁妻子与20岁丈夫终于“相见”
-
蜀山战纪2踏火行歌
-
超级黑道学生
-
新疆女孩用放了一周的馕劈开西瓜
-
“多人将两女子关铁笼游街”系摆拍
-
特工绍特 (2010) — The Movie Database (TMDB)
-
班长殿下电视剧
-
開心魔法
-
来吧冠军第二季免费版_来吧冠军第二季免费版下载
-
在美漫当心灵导师的日子
-
全国电视节目表查询_电视节目频道表查询
-
韩国人又开始结婚生娃了
-
婚变 电视剧_婚变 电视剧豆瓣
-
清穿之四爷娇宠皇妃(清穿之四爷娇宠皇妃笔趣阁)
-
机械师3免费高清观看(机械师3国语高清免费观看)
-
女生平时数学50高考超常发挥602
-
邻家花美男的演员表_邻家花美男主演
-
《道士下山》HD中字
-
温州新中国电影院今日放映表
-
母亲残疾父亲务农 河南女孩高考699分
-
- 标签列表
-
