我从一个类开始,该类包含为宾果游戏完成所有工作的所有方法和构造函数。然后有一个“测试器类”,它将通过使用 System.out.print 打印和更新宾果卡。现在我需要为宾果游戏添加一些图形。每次有更新时,我应该使用我的第一个类来支持一个新类来抽卡。
我能够使用与原始 2 不同的代码来完成宾果卡图形的第一次迭代:
import java.awt.Rectangle;
import javax.swing.JComponent;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Ellipse2D;
public class BingoComponent extends JComponent {
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
Rectangle box = new Rectangle(28,105,80,80);
for(int j = 0;j<5;j++){
g2.draw(box);
for(int i = 0;i<4;i++){
box.translate(80,0);
g2.draw(box);
}
box.translate(-320,80);
}
g2.setPaint(Color.BLUE);
g2.setFont(new Font("Arial", Font.BOLD,44));
g2.drawString("B",50,100);
g2.drawString("I",140,100);
g2.drawString("N",215,100);
g2.drawString("G",290,100);
g2.drawString("O",370,100);
g2.setPaint(Color.RED);
Ellipse2D.Double ellipse = new Ellipse2D.Double(198,275,60,60);
g2.draw(ellipse);
g2.fill(ellipse);
Bingo_Card test_card = new Bingo_Card();
g2.setPaint(Color.BLACK);
g2.setFont(new Font("Times", Font.PLAIN,24));
int x_location = 60;
int y_location = 150;
int number_value;
for(int j = 0;j<5;j++){
number_value = test_card.get_number(j);
g2.drawString(""+number_value,x_location,y_location);
x_location += 80;
}
x_location = 60;
y_location += 80;
for(int j = 5;j<10;j++){
number_value = test_card.get_number(j);
g2.drawString(""+number_value,x_location,y_location);
x_location += 80;
}
x_location = 60;
y_location += 80;
for(int j = 10;j<15;j++){
number_value = test_card.get_number(j);
if(number_value!=0){
g2.drawString(""+number_value,x_location,y_location);
}
x_location += 80;
}
x_location = 60;
y_location += 80;
for(int j = 15;j<20;j++){
number_value = test_card.get_number(j);
g2.drawString(""+number_value,x_location,y_location);
x_location += 80;
}
x_location = 60;
y_location += 80;
for(int j = 20;j<25;j++){
number_value = test_card.get_number(j);
g2.drawString(""+number_value,x_location,y_location);
x_location += 80;
}
}
}
我与这段代码一起使用:
public class makecard {
public static void main(String args[]){
JFrame frame = new JFrame();
frame.setSize(800,800);
frame.setTitle("BINGO Card");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BingoComponent component = new BingoComponent();
frame.add(component);
frame.setVisible(true);
}
}
但我不明白如何在我原来的两个代码中实现这一点。哪个是:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Ellipse2D;
public class Bingo_Card {
private ArrayList<Integer> bingo_card;
public boolean bingo = false;
public Bingo_Card(){
/*ArrayList<Integer>*/ bingo_card = new ArrayList<>();
ArrayList<Integer> columnBlist = new ArrayList<>();
for(int i = 1;i<=15;i++){
columnBlist.add(i);
}
Collections.shuffle(columnBlist);
ArrayList<Integer> columnB = new ArrayList<>();
for(int j = 0;j<5;j++){
columnB.add(columnBlist.get(j));
}
ArrayList<Integer> columnIlist = new ArrayList<>();
for(int i = 16;i<=30;i++){
columnIlist.add(i);
}
Collections.shuffle(columnIlist);
ArrayList<Integer> columnI = new ArrayList<>();
for(int j = 0;j<5;j++){
columnI.add(columnIlist.get(j));
}
List<Integer> columnNlist = new ArrayList<>();
for(int i = 31;i<=45;i++){
columnNlist.add(i);
}
Collections.shuffle(columnNlist);
ArrayList<Integer> columnN = new ArrayList<>();
for(int j = 0;j<4;j++){
columnN.add(columnNlist.get(j));
}
columnN.add(2,0);
List<Integer> columnGlist = new ArrayList<>();
for(int i = 46;i<=60;i++){
columnGlist.add(i);
}
Collections.shuffle(columnGlist);
ArrayList<Integer> columnG = new ArrayList<>();
for(int j = 0;j<5;j++){
columnG.add(columnGlist.get(j));
}
List<Integer> columnOlist = new ArrayList<>();
for(int i = 61;i<=75;i++){
columnOlist.add(i);
}
Collections.shuffle(columnOlist);
ArrayList<Integer> columnO = new ArrayList<>();
for(int j = 0;j<5;j++){
columnO.add(columnOlist.get(j));
}
for(int x=0;x<5;x++){
bingo_card.add(columnB.get(x));
bingo_card.add(columnI.get(x));
bingo_card.add(columnN.get(x));
bingo_card.add(columnG.get(x));
bingo_card.add(columnO.get(x));
}
}
public int get_number(int index){
int number = bingo_card.get(index);
return(number);
}
public void print_card(){
System.out.println(" B I N G O ");
System.out.println("----------------");
for(int a = 0;a<5;a++){
if(bingo_card.get(a)<10){
System.out.print("| "+bingo_card.get(a));
}
else{
System.out.print("| "+bingo_card.get(a));
}
}
System.out.println();
System.out.println("----------------");
for(int b = 5;b<10;b++){
if(bingo_card.get(b)<10){
System.out.print("| "+bingo_card.get(b));
}
else{
System.out.print("| "+bingo_card.get(b));
}
}
System.out.println();
System.out.println("----------------");
for(int c = 10;c<15;c++){
if(bingo_card.get(c)<10){
System.out.print("| "+bingo_card.get(c));
}
else{
System.out.print("| "+bingo_card.get(c));
}
}
System.out.println();
System.out.println("----------------");
for(int d = 15;d<20;d++){
if(bingo_card.get(d)<10){
System.out.print("| "+bingo_card.get(d));
}
else{
System.out.print("| "+bingo_card.get(d));
}
}
System.out.println();
System.out.println("----------------");
for(int e = 20;e<25;e++){
if(bingo_card.get(e)<10){
System.out.print("| "+bingo_card.get(e));
}
else{
System.out.print("| "+bingo_card.get(e));
}
}
System.out.println();
System.out.println("----------------");
}
public void check_match(int call_number){
for(int i = 0; i<(bingo_card.size());i++){
if(call_number == bingo_card.get(i)){
bingo_card.set(i,0);
}
}
}
public boolean check_bingo(){
if(bingo_card.get(0)==0&bingo_card.get(1)==0&bingo_card.get(2)==0&bingo_card.get(3)==0&bingo_card.get(4)==0){
bingo = true;
}
else if(bingo_card.get(5)==0&bingo_card.get(6)==0&bingo_card.get(7)==0&bingo_card.get(8)==0&bingo_card.get(9)==0){
bingo = true;
}
else if(bingo_card.get(10)==0&bingo_card.get(11)==0&bingo_card.get(12)==0&bingo_card.get(13)==0&bingo_card.get(14)==0){
bingo = true;
}
else if(bingo_card.get(15)==0&bingo_card.get(16)==0&bingo_card.get(17)==0&bingo_card.get(18)==0&bingo_card.get(19)==0){
bingo = true;
}
else if(bingo_card.get(20)==0&bingo_card.get(21)==0&bingo_card.get(22)==0&bingo_card.get(23)==0&bingo_card.get(24)==0){
bingo = true;
}
else if(bingo_card.get(0)==0&bingo_card.get(5)==0&bingo_card.get(10)==0&bingo_card.get(15)==0&bingo_card.get(20)==0){
bingo = true;
}
else if(bingo_card.get(1)==0&bingo_card.get(6)==0&bingo_card.get(11)==0&bingo_card.get(16)==0&bingo_card.get(21)==0){
bingo = true;
}
else if(bingo_card.get(2)==0&bingo_card.get(7)==0&bingo_card.get(12)==0&bingo_card.get(17)==0&bingo_card.get(22)==0){
bingo = true;
}
else if(bingo_card.get(3)==0&bingo_card.get(8)==0&bingo_card.get(13)==0&bingo_card.get(18)==0&bingo_card.get(23)==0){
bingo = true;
}
else if(bingo_card.get(4)==0&bingo_card.get(9)==0&bingo_card.get(14)==0&bingo_card.get(19)==0&bingo_card.get(24)==0){
bingo = true;
}
else if(bingo_card.get(0)==0&bingo_card.get(6)==0&bingo_card.get(12)==0&bingo_card.get(18)==0&bingo_card.get(24)==0){
bingo = true;
}
else if(bingo_card.get(4)==0&bingo_card.get(8)==0&bingo_card.get(12)==0&bingo_card.get(16)==0&bingo_card.get(20)==0){
bingo = true;
}
else{
bingo = false;
}
return(bingo);
}
和测试仪:
public class BINGOFINAL {
public static void main(String args[]){
Bingo_Card test_card = new Bingo_Card();
test_card.print_card();
while(test_card.check_bingo() == false){
System.out.println("Please input the called out number: ");
Scanner input = new Scanner(System.in);
int call_out = input.nextInt();
test_card.check_match(call_out);
test_card.check_bingo();
test_card.print_card();
}
System.out.println("BINGO!");
}
}
我需要将 BingoComponent 实现到原来的两个中,并且每次都更新卡片。