Java 如何将最终分数添加到结束屏幕?
嗨,我是一个新的程序员,我一直在做这个非常简单的破盒游戏,我用YT的教程制作。现在我开始尝试修改它,使它更吸引人。我使用的教程非常好,但它并没有告诉我如何将当前分数添加到“你们赢了,分数:” 代码:Java 如何将最终分数添加到结束屏幕?,java,Java,嗨,我是一个新的程序员,我一直在做这个非常简单的破盒游戏,我用YT的教程制作。现在我开始尝试修改它,使它更吸引人。我使用的教程非常好,但它并没有告诉我如何将当前分数添加到“你们赢了,分数:” 代码: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.Ac
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.Timer;
import javax.swing.JPanel;
public class Gameplay extends JPanel implements KeyListener,
ActionListener {
private boolean play = false;
private int score = 0;
private int totalBricks = 21;
private Timer timer;
private int delay = 8;
private int playerX = 310;
private int ballposX = 200;
private int ballposY = 350;
private int ballXdir = -1;
private int ballYdir = -2;
private MapGenerator map;
public Gameplay() {
map = new MapGenerator(3, 7);
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
timer = new Timer(delay, this);
timer.start();
}
public void paint(Graphics g) {
// background
g.setColor(Color.black);
g.fillRect(1, 1, 692, 592);
//drawing map
map.draw((Graphics2D)g);
//borders
g.setColor(Color.yellow);
g.fillRect(0, 0, 3, 592);
g.fillRect(0, 0, 692, 3);
g.fillRect(691, 0, 3, 592);
//scores
g.setColor(Color.white);
g.setFont(new Font("serif", Font.BOLD, 25));
g.drawString(""+score, 590, 30);
//the paddel
g.setColor(Color.green);
g.fillRect(playerX, 550, 100, 8);
//the ball
g.setColor(Color.yellow);
g.fillOval(ballposX, ballposY, 20, 20);
if(totalBricks <= 0) {
play = false;
ballXdir = 0;
ballYdir = 0;
g.setColor(Color.red);
g.setFont(new Font("serif", Font.BOLD, 30));
g.drawString("You Won, score: ", 260, 300);
g.setFont(new Font("serif", Font.BOLD, 20));
g.drawString("Press ENTER to restart.", 260, 350);
}
if(ballposY > 570) {
play = false;
ballXdir = 0;
ballYdir = 0;
g.setColor(Color.red);
g.setFont(new Font("serif", Font.BOLD, 30));
g.drawString("Game Over, Score: ", 200, 300);
g.setFont(new Font("serif", Font.BOLD, 20));
g.drawString("Press ENTER to restart.", 230, 350);
}
g.dispose();
}
@Override
public void actionPerformed(ActionEvent e) {
timer.start();
if(play) {
if(new Rectangle(ballposX, ballposY, 20, 20).intersects(new
Rectangle(playerX, 550, 100, 8))) {
ballYdir = -ballYdir;
}
A: for(int i = 0; i<map.map.length; i++) {
for(int j = 0; j<map.map[0].length; j++) {
if(map.map[i][j] > 0) {
int brickX = j* map.brickWidth + 80;
int brickY = i* map.brickHeight + 50;
int brickWidth = map.brickWidth;
int brickHeight = map.brickHeight;
Rectangle rect = new Rectangle(brickX, brickY,
brickWidth, brickHeight);
Rectangle ballRect = new Rectangle(ballposX,
ballposY, 19,19);
Rectangle brickRect = rect;
if(ballRect.intersects(brickRect)) {
map.setBrickValue(0, i, j);
totalBricks--;
score += 5;
if(ballposX + 19 <= brickRect.x && ballposX + 1 >=
brickRect.x + brickRect.width) {
ballXdir = -ballXdir;
} else {
ballYdir = -ballYdir;
}
break A;
}
}
}
}
ballposX += ballXdir;
ballposY += ballYdir;
if(ballposX < 0) {
ballXdir = -ballXdir;
}
if(ballposY < 0) {
ballYdir = -ballYdir;
}
if(ballposX > 670) {
ballXdir = -ballXdir;
}
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
if(playerX >=600) {
playerX = 600;
} else {
moveRight();
}
}
if(e.getKeyCode() == KeyEvent.VK_LEFT) {
if(playerX < 10) {
playerX = 10;
} else {
moveLeft();
}
}
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
if(!play) {
play = true;
ballposX = 200;
ballposY = 350;
ballXdir = -1;
ballYdir = -2;
playerX = 310;
score = 0;
totalBricks = 21;
map = new MapGenerator(3, 7);
repaint();
}
}
}
public void moveRight() {
play = true;
playerX+=20;
}
public void moveLeft() {
play = true;
playerX-=20;
}
}
导入java.awt.Color;
导入java.awt.Font;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Rectangle;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入javax.swing.Timer;
导入javax.swing.JPanel;
公共类游戏扩展JPanel实现KeyListener,
ActionListener{
私有布尔播放=假;
私人智力得分=0;
私人整数=21;
私人定时器;
专用int延迟=8;
专用整数播放器x=310;
私有整数ballposX=200;
私人整数ballposY=350;
私有int-ballXdir=-1;
私有int-ballYdir=-2;
私有地图生成器地图;
公共游戏{
map=新的MapGenerator(3,7);
addKeyListener(此);
设置聚焦(真);
setFocusTraversalKeysEnabled(false);
定时器=新定时器(延迟,此);
timer.start();
}
公共空间涂料(图g){
//背景
g、 设置颜色(颜色为黑色);
g、 fillRect(1,1692,592);
//制图
绘制地图((图2d)g);
//边界
g、 setColor(颜色为黄色);
g、 fillRect(0,0,3592);
g、 fillRect(0,0692,3);
g、 fillRect(691,0,3592);
//得分
g、 setColor(Color.white);
g、 setFont(新字体(“衬线”,Font.BOLD,25));
g、 抽绳(“+”分数590,30);
//围场
g、 setColor(Color.green);
g、 fillRect(playerX,550100,8);
//球
g、 setColor(颜色为黄色);
g、 fillOval(ballposX,ballposY,20,20);
如果(570){
玩=假;
ballXdir=0;
ballYdir=0;
g、 setColor(Color.red);
g、 setFont(新字体(“衬线”,Font.BOLD,30));
g、 抽绳(游戏结束,分数:,200,300);
g、 setFont(新字体(“衬线”,Font.BOLD,20));
g、 抽绳(“按回车键重新启动。”,230,350);
}
g、 处置();
}
@凌驾
已执行的公共无效操作(操作事件e){
timer.start();
如果(玩){
if(新矩形(ballposX,ballposY,20,20)。相交(新
矩形(playerX,550100,8))){
ballYdir=-ballYdir;
}
A:对于(int i=0;i 670){
ballXdir=-ballXdir;
}
}
重新油漆();
}
@凌驾
public void keyReleased(KeyEvent e){}
@凌驾
public void keyTyped(KeyEvent e){}
@凌驾
按下公共无效键(按键事件e){
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
如果(playerX>=600){
playerX=600;
}否则{
moveRight();
}
}
如果(例如getKeyCode()==KeyEvent.VK_左){
如果(playerX<10){
playerX=10;
}否则{
左移();
}
}
如果(例如getKeyCode()==KeyEvent.VK_ENTER){
如果(!玩){
玩=真;
ballposX=200;
ballposY=350;
ballXdir=-1;
ballYdir=-2;
playerX=310;
得分=0;
totalBricks=21;
map=新的MapGenerator(3,7);
重新油漆();
}
}
}
公权{
玩=真;
playerX+=20;
}
公共空间左移(){
玩=真;
playerX-=20;
}
}
“你赢了,得分:”+得分
在java中,您可以将字符串组合成更长的字符串。在本例中,“you wind,Score:”是一个字符串,当您将分数添加到其中时,分数将转换为字符串,并与第一部分组合,以提供所需的内容
如果您尝试运行它,它将无法工作,因为您需要另外两个类的代码来运行它。这里是为游戏结束设置文本的部分。如果(totalBricks)如果您对java开发感兴趣,我建议您至少阅读前4个链接(入门、学习java语言、基本java类、集合)。您所做的教程很有趣,但缺少很多基础知识。谢谢您的指导。我会检查一下。