/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JHandHero.java
*
* Created on 21-lug-2010, 12.50.35
*/
package jhandhero.graphics;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import jhandhero.Game;
/**
*
* @author Paolo
*/
public class JHandHero
extends javax.
swing.
JFrame {
private Game game;
private ArrayList<JLabel> rightLabels;
private ArrayList<JLabel> leftLabels;
private ArrayList<JLabel> upLabels;
private ArrayList<JLabel> downLabels;
private Move move;
private Choose choose;
private boolean started;
private class Move
implements Runnable {
private boolean pause;
public Move() {
this.
start = new Thread(this);
this.pause=false;
}
public void start() {
this.start.start();
}
public void stop() {
this.start.stop();
}
public void pause() {
this.pause=true;
}
public void resume(){
this.pause=false;
}
public void run() {
while (true) {
while(this.pause);
this.moveLabel(rightLabels);
this.moveLabel(leftLabels);
this.moveLabel(upLabels);
this.moveLabel(downLabels);
int sleep = (11 - game.getLevel())*5;
try {
}
}
}
private void moveLabel(ArrayList<JLabel> pLabels) {
for (int i = 0; i < pLabels.size(); i++) {
pLabels.get(i).setLocation(pLabels.get(i).getLocation().x, pLabels.get(i).getLocation().y + 10);
if(pLabels.get(i).getLocation().y>=360){
gamePanel.remove(pLabels.get(i));
pLabels.remove(i);
}
}
}
}
private class Choose
implements Runnable {
private boolean pause;
private int choose;
public Choose() {
this.
start = new Thread(this);
this.pause=false;
}
public void start() {
this.start.start();
}
public void stop(){
this.start.stop();
}
public void pause() {
this.pause=true;
}
public void resume(){
this.pause=false;
}
public void run() {
while (true) {
while(this.pause);
int random
=(int)(Math.
random()*4
);
add.
setIcon(new ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/arrows"+random
+".png")));
add.setBounds(20 + (random * 60), -40, 40, 40);
switch(random){
case 0:
rightLabels.add(add);
break;
case 1:
leftLabels.add(add);
break;
case 2:
upLabels.add(add);
break;
case 3:
downLabels.add(add);
break;
}
gamePanel.add(add);
gamePanel.repaint();
int sleep=(11-game.getLevel())*100;
this.choose++;
toLevelUp.setText(((game.getLevel()*50)-this.choose)+"");
if(this.choose==(game.getLevel()*50)){
this.choose=0;
game.upLevel();
level.setText(game.getLevel()+"");
}
try {
}
}
}
}
private int selectedArrows;
@Override
switch (e.getKeyCode()) {
this.selectedArrows = 1;
break;
this.selectedArrows = 2;
break;
this.selectedArrows = 3;
break;
this.selectedArrows = 4;
break;
}
for (int i = 0; i < 4; i++) {
if (i == this.selectedArrows - 1) {
arrowsLabel
[i
].
setIcon(new ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/selected" + i
+ ".png")));
} else {
arrowsLabel
[i
].
setIcon(new ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/arrows" + i
+ ".png")));
}
}
}
@Override
int point = 0;
switch (this.selectedArrows) {
case 1:
point = this.labelControl(rightLabels, 1);
break;
case 2:
point = this.labelControl(leftLabels, 2);
break;
case 3:
point = this.labelControl(upLabels, 3);
break;
case 4:
point = this.labelControl(downLabels, 4);
break;
}
game.getPlayer().setScore(game.getPlayer().getScore() + point);
score.setText(game.getPlayer().getScore() + "");
this.selectedArrows = 0;
for (int i = 0; i < 4; i++) {
arrowsLabel
[i
].
setIcon(new ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/arrows" + i
+ ".png")));
}
}
private int labelControl(ArrayList<JLabel> pLabels, int pDirection) {
int retval = 0;
JLabel control
= arrowsLabel
[pDirection
- 1
];
for (int i = 0; i < pLabels.size(); i++) {
Rectangle intersects
= control.
getBounds().
intersection(pLabels.
get(i
).
getBounds());
if(!intersects.isEmpty()){
retval = retval + (intersects.height + intersects.width);
retval= retval*game.getLevel();
}
}
return retval;
}
}
/** Creates new form JHandHero */
public JHandHero(Game pGame) {
initComponents();
this.
setIconImage(Toolkit.
getDefaultToolkit().
getImage(getClass
().
getResource("images/JHandHero.png")));
this.game = pGame;
this.initInfo();
this.initLabel();
this.gamePanel.setFocusable(true);
this.move= new Move();
this.choose= new Choose();
this.started=false;
}
private void initLabel() {
this.rightLabels = new ArrayList<JLabel>();
this.leftLabels = new ArrayList<JLabel>();
this.upLabels = new ArrayList<JLabel>();
this.downLabels = new ArrayList<JLabel>();
this.
arrowsLabel = new JLabel[4
];
for (int i = 0; i < 4; i++) {
this.
arrowsLabel[i
] = new JLabel(new ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/arrows" + i
+ ".png")));
this.arrowsLabel[i].setSize(40, 40);
this.arrowsLabel[i].setLocation(20 + (i * 60), 320);
this.arrowsLabel[i].setVisible(true);
this.gamePanel.add(this.arrowsLabel[i]);
}
}
private void initInfo() {
this.name.setText(this.game.getPlayer().getName());
this.level.setText(this.game.getLevel() + "");
this.score.setText(this.game.getPlayer().getScore() + "");
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
panel
= new javax.
swing.
JPanel();
jLabel1
= new javax.
swing.
JLabel();
infoPanel
= new javax.
swing.
JPanel();
nameLabel
= new javax.
swing.
JLabel();
name
= new javax.
swing.
JLabel();
levelLabel
= new javax.
swing.
JLabel();
level
= new javax.
swing.
JLabel();
scoreLabel
= new javax.
swing.
JLabel();
score
= new javax.
swing.
JLabel();
playPauseButton
= new javax.
swing.
JButton();
toLevelUpLabel
= new javax.
swing.
JLabel();
toLevelUp
= new javax.
swing.
JLabel();
gamePanel
= new javax.
swing.
JPanel();
setTitle("JHandHero - by Paolo Ricciuti (C)");
setFocusable(false);
setResizable(false);
panel.
setBackground(new java.
awt.
Color(0, 0, 0
));
panel.setFocusable(false);
jLabel1.
setIcon(new javax.
swing.
ImageIcon(getClass
().
getResource("/jhandhero/graphics/images/JHandHero.png"))); // NOI18N
jLabel1.setFocusable(false);
infoPanel.
setBackground(new java.
awt.
Color(0, 0, 0
));
infoPanel.setFocusable(false);
nameLabel.
setForeground(new java.
awt.
Color(240, 240, 240
));
nameLabel.setText("Nome:");
nameLabel.setFocusable(false);
name.
setForeground(new java.
awt.
Color(240, 240, 240
));
name.setFocusable(false);
levelLabel.
setForeground(new java.
awt.
Color(240, 240, 240
));
levelLabel.setText("Livello:");
levelLabel.setFocusable(false);
level.
setForeground(new java.
awt.
Color(240, 240, 240
));
level.setFocusable(false);
scoreLabel.
setForeground(new java.
awt.
Color(240, 240, 240
));
scoreLabel.setText("Score:");
scoreLabel.setFocusable(false);
score.
setForeground(new java.
awt.
Color(240, 240, 240
));
score.setFocusable(false);
playPauseButton.setText("Play");
playPauseButton.setFocusable(false);
playPauseButton.
addActionListener(new java.
awt.
event.
ActionListener() {
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
playPauseButtonActionPerformed(evt);
}
});
toLevelUpLabel.
setForeground(new java.
awt.
Color(240, 240, 240
));
toLevelUpLabel.setText("Level UP:");
toLevelUpLabel.setFocusable(false);
toLevelUp.
setForeground(new java.
awt.
Color(240, 240, 240
));
toLevelUp.setFocusable(false);
javax.swing.GroupLayout infoPanelLayout = new javax.swing.GroupLayout(infoPanel);
infoPanel.setLayout(infoPanelLayout);
infoPanelLayout.setHorizontalGroup(
infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(infoPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(playPauseButton, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 107,
Short.
MAX_VALUE)
.addGroup(infoPanelLayout.createSequentialGroup()
.addComponent(nameLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.
addComponent(name, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 70,
Short.
MAX_VALUE))
.addGroup(infoPanelLayout.createSequentialGroup()
.addComponent(levelLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.
addComponent(level, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 68,
Short.
MAX_VALUE))
.addGroup(infoPanelLayout.createSequentialGroup()
.addComponent(scoreLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.
addComponent(score, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 70,
Short.
MAX_VALUE))
.addGroup(infoPanelLayout.createSequentialGroup()
.addComponent(toLevelUpLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(toLevelUp, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
infoPanelLayout.setVerticalGroup(
infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(infoPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(nameLabel)
.addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(levelLabel)
.addComponent(level, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(scoreLabel)
.addComponent(score, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(31, 31, 31)
.addComponent(playPauseButton)
.addGap(18, 18, 18)
.addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(toLevelUpLabel)
.addComponent(toLevelUp, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.
addContainerGap(205,
Short.
MAX_VALUE))
);
gamePanel.
setBackground(new java.
awt.
Color(0, 0, 0
));
gamePanel.setLayout(null);
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addComponent(gamePanel, javax.swing.GroupLayout.PREFERRED_SIZE, 264, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(infoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.
addComponent(gamePanel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 356,
Short.
MAX_VALUE))
.addGroup(panelLayout.createSequentialGroup()
.addGap(200, 200, 200)
.addComponent(infoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.
addContainerGap(javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(panel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
);
java.
awt.
Dimension screenSize
= java.
awt.
Toolkit.
getDefaultToolkit().
getScreenSize();
setBounds((screenSize.width-416)/2, (screenSize.height-615)/2, 416, 615);
}// </editor-fold>//GEN-END:initComponents
private void playPauseButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_playPauseButtonActionPerformed
if (this.playPauseButton.getText().equals("Play")) {
this.playPauseButton.setText("Pause");
this.gamePanel.addKeyListener(new KeysListener());
if(this.started){
this.choose.resume();
this.move.resume();
}else{
this.choose.start();
this.move.start();
this.started=true;
}
} else {
this.playPauseButton.setText("Play");
this.gamePanel.removeKeyListener(this.gamePanel.getKeyListeners()[0]);
this.choose.pause();
this.move.pause();
}
}//GEN-LAST:event_playPauseButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JPanel gamePanel
;
private javax.
swing.
JPanel infoPanel
;
private javax.
swing.
JLabel jLabel1
;
private javax.
swing.
JLabel level
;
private javax.
swing.
JLabel levelLabel
;
private javax.
swing.
JLabel name
;
private javax.
swing.
JLabel nameLabel
;
private javax.
swing.
JPanel panel
;
private javax.
swing.
JButton playPauseButton
;
private javax.
swing.
JLabel score
;
private javax.
swing.
JLabel scoreLabel
;
private javax.
swing.
JLabel toLevelUp
;
private javax.
swing.
JLabel toLevelUpLabel
;
// End of variables declaration//GEN-END:variables
}