## Latest CS Project. Switching values in a Array

Program 3: Square-Up

This is my assignment, I am currently on part E. I need to find out how arrange the values.

0 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20

Lets say I choose row 1, my goal is for the values in the array of row 1, (0-6) to be assigned into 9,16,3,10,17,4,11; respectively.

I'm not sure how to do this while also shuffling the board. Any help is appreciated.

Here is a copy of my class Board:

Java Code:
```import java.util.Random;          // allows getting a random number
import java.util.Scanner;		  // allows user input from the keyboard
class Board {

// create the array of 52 cards
public static void main(String[] args)  {
Square[] cardDeck= new Square[52];

// setting up the deck
for (int x = 0; x <= 12; x++){
int l=x+1;
String y = "" + l;
cardDeck[x] = new Square( 0,0, 40, "red", false, y);    // red
}
for (int x = 13; x <= 25; x++){
int l=x-12;
String y = "" + l;
cardDeck[x] = new Square( 0,0, 40, "green", false, y);    // green
}
for (int x = 26; x <= 38; x++){
int l=x-25;
String y = "" + l;
cardDeck[x] = new Square( 0,0, 40, "blue", false, y);    // blue
}
for (int x = 39; x <= 51; x++){
int l=x-38;
String y = "" + l;
cardDeck[x] = new Square( 0,0, 40, "yellow", false, y);    // yellow
}
// output of original deck
System.out.println("The deck is:");

for(int x=0; x<=51; x++){
char theColor = cardDeck[x].getColor().charAt( 0);
String theNumber = cardDeck[x].getLabel();
if (x<12){
System.out.print(theColor+theNumber+"  ");
}
if (x==12){
System.out.print(theColor+theNumber+"\n");
}
if (x>12 && x<25){
System.out.print(theColor+theNumber+"  ");
}
if (x==25){
System.out.print(theColor+theNumber+"\n");
}
if (x>25 && x<38){
System.out.print(theColor+theNumber+"  ");
}
if (x==38){
System.out.print(theColor+theNumber+"\n");
}
if (x>38 && x<51){
System.out.print(theColor+theNumber+"  ");
}
if (x==51){
System.out.print(theColor+theNumber+"\n");
}
}

System.out.println("Enter any letter to continue:");
Scanner keyboard = new Scanner( System.in);
keyboard.next();

//Shuffling the deck..
System.out.println("\nThe shuffled deck is:");

Random rnG = new Random();

//--- Shuffle by exchanging each element randomly
for (int c=0; c<cardDeck.length; c++) {
int index1 = rnG.nextInt(cardDeck.length);
Square temp = cardDeck[c];
cardDeck[c] = cardDeck[index1];
cardDeck[index1] = temp;
}

for(int x=0; x<=51; x++){
char theColor = cardDeck[x].getColor().charAt( 0);
String theNumber = cardDeck[x].getLabel();
if (x<12){
System.out.print(theColor+theNumber+"  ");
}
if (x==12){
System.out.print(theColor+theNumber+"\n");
}
if (x>12 && x<25){
System.out.print(theColor+theNumber+"  ");
}
if (x==25){
System.out.print(theColor+theNumber+"\n");
}
if (x>25 && x<38){
System.out.print(theColor+theNumber+"  ");
}
if (x==38){
System.out.print(theColor+theNumber+"\n");
}
if (x>38 && x<51){
System.out.print(theColor+theNumber+"  ");
}
if (x==51){
System.out.print(theColor+theNumber+"\n");
}
}

//Making a new array with first 21 cards.
Square[] selectedCards = new Square[ 21];
for( int i=0; i<21; i++) {
selectedCards[ i]=cardDeck[ i];    // copy the address from the card deck
}
System.out.println("Enter any letter to continue:");
keyboard.next();
System.out.println("\nThe first 21 cards is:");
for(int x=0; x<=20; x++){
char theColor = selectedCards[x].getColor().charAt( 0);
String theNumber = selectedCards[x].getLabel();
if (x<6){
System.out.print(theColor+theNumber+"  ");
}
if (x==6){
System.out.print(theColor+theNumber+"\n");
}
if (x>6 && x<13){
System.out.print(theColor+theNumber+"  ");
}
if (x==13){
System.out.print(theColor+theNumber+"\n");
}
if (x>13 && x<20){
System.out.print(theColor+theNumber+"  ");
}
if (x==20){
System.out.print(theColor+theNumber+"\n");
}
}
System.out.println("Think of one of the cards and remember it. Enter any letter when you're ready:");
keyboard.next();
System.out.println("To make it harder for me I'm going to reshuffle the cards, but first\n"
+"I need a little help, since my mind-reading powers are limited.\n"
+"In the table above, which row (1, 2, or 3) is your card in?");
int userInput = keyboard.nextInt();
//Rearrange the arrays
//Reshuffle the deck
if (userInput == 1){
for (int c=0; c<8; c++) {
int index1 = rnG.nextInt(cardDeck.length);
Square temp = selectedCards[c];
selectedCards[c] = selectedCards[index1];
selectedCards[index1] = temp;
}
}
}
}//end Board```
Here is the class Square:
Java Code:
```public class Square
{
private int size;
private int xPosition;
private int yPosition;
private String color;
private boolean isVisible;
private String label;
private int id;		// used to identify squares without using their label

/**
* Create a new Square at default position with default color.
*/
public Square()
{
size = 30;
xPosition = 60;
yPosition = 50;
color = "red";
isVisible = false;
label = "";
id = 0;
}

/**
* Create a new Square with supplied position, size, color, and visibility
*/
public Square( int x, int y, int theSize, String theColor,
boolean visibility)
{
xPosition = x;
yPosition = y;
size = theSize;
color = theColor;
isVisible = visibility;
label = "";
id = 0;
}

/**
* Create a new Square with supplied position, size, color, and visibility
*/
public Square( int x, int y, int theSize, String theColor,
boolean visibility, String theLabel)
{
xPosition = x;
yPosition = y;
size = theSize;
color = theColor;
isVisible = visibility;
label = theLabel;
id = 0;
}

// Square copy constructor, making a new Square based on an existing Square
public Square( Square otherSquare)
{
xPosition = otherSquare.xPosition;
yPosition = otherSquare.yPosition;
size = otherSquare.size;
color = otherSquare.color;
isVisible = otherSquare.isVisible;
label = otherSquare.label;
id = otherSquare.id;
}

/**
* Get the color for this square
*/
public String getColor()
{
return color;
}

/**
* Get the xPosition for this square
*/
public int getX()
{
return xPosition;
}

/**
* Get the yPosition for this square
*/
public int getY()
{
return yPosition;
}

/**
* Get the size for this square
*/
public int getSize()
{
return size;
}

/**
* Get the label for this square
*/
public String getLabel()
{
return label;
}

/**
* Get the id for this square
*/
public int getID()
{
return id;
}

/**
* Get the visibility for this square
*/
public boolean getVisibility()
{
return isVisible;
}

/**
* Make this Square visible. If it was already visible, do nothing.
*/
public void makeVisible()
{
isVisible = true;
}

/**
* Make this Square invisible. If it was already invisible, do nothing.
*/
public void makeInvisible()
{
isVisible = false;
}

/**
* Slowly move the Square horizontally by 'distance' pixels.
*/
public void slowMoveHorizontal(int distance)
{
int delta;

if(distance < 0)
{
delta = -1;
distance = -distance;
}
else
{
delta = 1;
}

for(int i = 0; i < distance; i++)
{
xPosition += delta;
}
}

/**
* Slowly move the Square vertically by 'distance' pixels.
*/
public void slowMoveVertical(int distance)
{
int delta;

if(distance < 0)
{
delta = -1;
distance = -distance;
}
else
{
delta = 1;
}

for(int i = 0; i < distance; i++)
{
yPosition += delta;
}
}

/**
* Change the size to the new size (in pixels). Size must be >= 0.
*/
public void changeSize(int newSize)
{
size = newSize;
}

/**
* Change the position of the square on the canvas.
*/
public void setPosition(int newX, int newY)
{
xPosition = newX;
yPosition = newY;
}

/**
* Change the color. Valid colors are "red", "yellow", "blue", "green",
* "magenta", "black", "cyan", "darkGray", "gray", "lightGray", "orange",
* "pink", "white"
*/
public void setColor(String newColor)
{
color = newColor;
}

/*
* Set the label
*/
public void setLabel( String theLabel)
{
label = theLabel;
}

/*
* Set the id
*/
public void setID( int theID)
{
id = theID;
}

/*
* Set the size
*/
public void setSize( int theSize)
{
size = theSize;
}

}```