java实现打砖块小游戏
作者:小伙子渴望力量么 发布时间:2021-07-26 14:47:11
标签:java,打砖块
本文实例为大家分享了java实现打砖块小游戏的具体代码,供大家参考,具体内容如下
源码共包含两个文件
文件1:play_zhuankuai.java
import java.awt.*;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class play_zhuankuai extends JPanel implements Runnable{
boolean exit=false;
boolean end=false;
double x=100; //控制小球坐标
double y=100;
double x1=300; //控制底板坐标
double y1=300;
int score=0;
int index[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //标记,记录砖块是否被打中
int x2[]=new int[15]; //控制砖块数量和坐标
int y2[]=new int[15];
double degree=3.14/3;
Image fangxing;
Image diban;
Image zhuankuai;
Image heiping;
Thread thread;
play_zhuankuai(){ //设置面板属性
jiazai();
thread = new Thread(this);
setSize(500,500);
setLocation(0,0);
setBackground(Color.black);
setVisible(true);
thread.start();
}
void jiazai(){ //导入图片
fangxing=Toolkit.getDefaultToolkit().getImage("images/方形.jpg").getScaledInstance(10,10,Image.SCALE_DEFAULT);
diban=Toolkit.getDefaultToolkit().getImage("images/底版.jpg").getScaledInstance(100, 10, Image.SCALE_DEFAULT);
zhuankuai=Toolkit.getDefaultToolkit().getImage("images/砖块.jpg").getScaledInstance(50, 20, Image.SCALE_DEFAULT);
heiping=Toolkit.getDefaultToolkit().getImage("images/黑屏.png").getScaledInstance(50, 20, Image.SCALE_DEFAULT);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
paint_zhuankuai(g);
g.setColor(Color.blue);
g.drawLine(0, 350, 500, 350);
g.drawImage(diban,(int)x1, (int)y1, null);
paint_heiping(g);
g.drawImage(fangxing, (int)x, (int)y, null);
paint_wenzi(g);
rule();
}
void rule(){
x=x+1*Math.cos(degree);
y=y+1*Math.sin(degree);
if(y>=500-50||score==1500){
end=true;
}
if(x>=500-20||x<=0)
degree=3.14-degree;
if(x1<=0)
x1=0;
if(x1>=400)
x1=400;
if(y1>=500-50)
y1=500-50;
if(y1<=350)
y1=350;
if(y>=y1-10&&x>=x1&&x<=x1+100||y<=0)
degree=-degree;
for(int i=0;i<x2.length;i++){
if((y>=y2[i]&&y<=y2[i]+20)&&((x>=x2[i]&&x<=x2[i]+50))&&index[i]==0){
index[i]=1;
degree=-degree;
score+=100;
}
}
}
void paint_heiping(Graphics g){
for(int i=0;i<x2.length;i++){
if(index[i]==1)
g.drawImage(heiping, x2[i], y2[i], null);
}
}
void paint_wenzi(Graphics g){
g.setColor(Color.red);
g.drawString("分数:"+score, 0, 340);
if(end){
if(score<1500)
g.drawString("游戏结束!!!",200,250);
else
g.drawString("闯关成功!!!",200,250);
exit=true;
}
}
void paint_zhuankuai(Graphics g){
int p=0;
int k=0;
for(int i=0,j=0;i<x2.length;i++){
p=100*j;
j++;
if(p+100>500){
j=1;
p=0;
k=k+60;
}
x2[i]=p;
y2[i]=k;
g.drawImage(zhuankuai, p,k,null);
}
}
@Override
public void run() {
while(!exit){
repaint();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
System.out.println("出现错误:"+e+"\n");
}
}
}
}
文件2:jframe_main.java
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class jframe_main extends JFrame implements KeyListener{
play_zhuankuai play=new play_zhuankuai();
jframe_main(){
addKeyListener(this);
add(play);
setSize(500,500);
setLocation(0, 0);
setVisible(true);
}
public static void main(String[] args) {
new jframe_main();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==38)
play.y1-=20;
if(e.getKeyCode()==40)
play.y1+=20;
if(e.getKeyCode()==37)
play.x1-=20;
if(e.getKeyCode()==39)
play.x1+=20;
}
@Override
public void keyReleased(KeyEvent e) {
}
}
友情提示:该段源码会调用相关图片素材,请自行添加,本人在此不方便上传,望谅解
更多精彩游戏,请参考专题《java经典小游戏》
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏 玩不停
javascript经典小游戏汇总
来源:https://blog.csdn.net/qq_35273452/article/details/77622013


猜你喜欢
- ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为
- 偶然机会看到一种对象初始的方式:// 新建一个列表,并赋值 "Harry","Tony","
- 本文实例讲述了Spring Bean的初始化和销毁。分享给大家供大家参考,具体如下:一 点睛在开发过程中,经常遇到在Bean使用之前或者之后
- 前言本问主要介绍DataBinding在Android App中的使用方法。数据绑定是将“提供器”的数据源与“消费者”绑定并使其同步的一种通
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:private SystemBarTintManager tintManager;@Ov
- java addMouseListener()方法使用用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的 * 接口。(要跟
- 常用命令:打包:mvn package编译:mvn compile清空:mvn clean(清除编译后目录,默认是target目录)运行测试
- 目录基本查询延迟查询属性类型筛选复合from子句多级排序分组联合查询-join合并-zip()分区(分页)并行linq取消长时间运行的并行l
- Spring @Configuration 和 @Component 区别一句话概括就是 @Configuration 中所有带 @Bean
- 曾几何时,我们写代码的时候,每次写Bean的时候都会使用快捷键生成get/set方法,有时候我经常会想,既然每一个Bean我们都会给其提供g
- 利用apache ftp工具实现文件的上传下载和删除,具体如下1、下载相应的jar包 com
- 字符串是由零个或多个字符组成的有限序列,是几乎所有编程语言中可以实现的非常重要和有用的数据类型。在C#语言中,字符串是System.Stri
- 实体类package com.whty.entity;public class User {private int id;private S
- 大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加
- 项目结构src com servletdemo
- 基本介绍数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图)说明:SpringMVC在调用方法
- 用idea编写代码不多天,写代码的时候突然左侧目录没了,遇到这种情况相信大多数的小伙伴都是和我一样直接百度,于是网上找了很长时间,大多数都是
- 自定义 webflux 容器配置配置代码@Componentpublic class ContainerConfig extends Rea
- BeanDefinitionRegistryPostProcessor概述可以看到BeanDefinitionRegistryPostPro
- 自定义控件的步骤:1 View的工作原理2 编写View类3 为View类增加属性4 绘制屏幕5 响应用户消息6 自定义回调函数java代码