Select 5 types of bolts explaining the following for each type: The shape and the main
dimensions of the bolt illustrating the head dimensions. The standard dimensions of the bolt
according to the Inch or Metric series. The materials and the corresponding strengths. Uses and
applications. Form a group of 5 students and submit one lab report for this assignment. You can
use the uploaded files for the bolts for your help. You are allowed to include any of these
materials in your lab report, but more than 70% of the report should cover materials from other
sources. You should acknowledge the sources including all the web sites, all books, all papers,
etc. that you depend on for your lab report and getting information.
Solution
1 Differentiation between bolt and screw. 1.1 Machine screws. 1.2 Hex cap screws. ... 2 Types
of screw and bolt. 2.1 Fasteners with a tapered shank (self-tapping screws) ... 3 Materials. 4
Bolted joints. 5 Mechanical classifications. 5.1 Inch. ... 6 Screw head shapes. 7 Types of screw
drives. 8 Tools..
1. send EDITED code please
Battleship.java
package part3;
public class Battleship {
public static void main(String[] args) {
// Generate a grid of 15 columns by 10 rows.
BattleshipGrid aGrid = new BattleshipGrid(10,10);
// Print the grid.
aGrid.print();
}
}
Battleship Grid.java
package part3;
import java.util.Random;
import java.util.Scanner;
public class BattleshipGrid {
private char[][] grid;
private int gridRows, gridColumns;
static final int CARRIER_SIZE = 5;
static final int BATTLESHIP_SIZE = 4;
static final int SUB_SIZE = 3;
static final int DESTROYER_SIZE = 3;
static final int PATROL_SIZE = 2;
static final char CARRIER_CHAR = 'C';
static final char BATTLESHIP_CHAR = 'B';
static final char SUB_CHAR = 'S';
static final char DESTROYER_CHAR = 'D';
static final char PATROL_CHAR = 'P';
static final char WATER_CHAR = '.';
public BattleshipGrid(int columns, int rows){
2. gridColumns = columns;
gridRows = rows;
// Make a two dimensional array of characters as the grid
grid = new char[gridColumns][gridRows];
// Clear the grid
clear();
// Assign the following ships
assignShip(CARRIER_CHAR, CARRIER_SIZE);
assignShip(BATTLESHIP_CHAR, BATTLESHIP_SIZE);
assignShip(SUB_CHAR, SUB_SIZE);
assignShip(DESTROYER_CHAR, DESTROYER_SIZE);
assignShip(PATROL_CHAR, PATROL_SIZE);
}
// Clear the grid
public void clear(){
for (int row=0; row < gridRows; row++){
for (int column=0; column < gridColumns; column++) grid[column][row] =
WATER_CHAR;
}
}
// Print the grid
public void print(){
for (int row=0; row < gridRows; row++){
for (int column=0; column < gridColumns; column++)
System.out.print(grid[column][row]);
System.out.println("");
}
}
// Assign a ship horizontally on the grid
private boolean assignShipHorizontally(char shipType, int size){
3. /*
1.2 If horizontal, select a random row to place the ship.
o Select a random column position to start “growing� your ship. The column position
must be less than 10-size of the ship to ensure the ship will fit.
o Look at the next adjacent squares on the grid row to see if they are blank.
o If any of the squares are not blank then the ship will not fit so go back to 1.1.
o If the ship does fit then mark it with its designation.
*/
// Select a row and a starting column to place a ship horizontally
Random randomGenerator = new Random();
int chosenRow = randomGenerator.nextInt(gridRows);
int startingColumn = randomGenerator.nextInt(gridColumns-size);
// Count consecutive grid locations horizontally and see if we can accommodate ship
int countSegments = 0;
for (int c = startingColumn; c < startingColumn+size; c++){
if (grid[c][chosenRow] == WATER_CHAR) countSegments++;
}
// If ship will fit then allocate the ship horizontally
if (countSegments == size){
for (int c = startingColumn; c < startingColumn+size; c++){
grid[c][chosenRow] = shipType;
}
return true;
}
return false;
}
// Assign the ship vertically on the grid
private boolean assignShipVertically(char shipType, int size){
/*
1.3 If vertical, select a random column to place the ship.
o Select a random row position to start “growing� your ship. The row position must
4. be less than 10-size of the ship to ensure the ship will fit.
o Look at the next adjacent squares on the grid column to see if they are blank.
o If any of the squares are not blank then the ship will not fit so go back to 1.1.
o If the ship does fit then mark it with its designation.
*/
// Select a column and a starting row to place a ship vertically
Random randomGenerator = new Random();
int chosenColumn = randomGenerator.nextInt(gridColumns);
int startingRow = randomGenerator.nextInt(gridRows-size);
// Count consecutive grid locations vertically and see if we can accommodate ship
int countSegments = 0;
for (int r = startingRow; r < startingRow+size; r++){
if (grid[chosenColumn][r] == WATER_CHAR) countSegments++;
}
// If ship will fit then allocate the ship vertically
if (countSegments == size){
for (int r = startingRow; r < startingRow+size; r++){
grid[chosenColumn][r] = shipType;
}
return true;
}
return false;
}
// Assign a ship to the grid
private void assignShip(char shipType, int size){
Random randomGenerator = new Random();
boolean status = false;
do{
// Randomly choose between horizontal and vertical allocation.
// Sometimes an allocation isnʻt possible so roll the dice and try again.
5. if (randomGenerator.nextInt(2) == 0)
status = assignShipHorizontally(shipType, size);
else
status = assignShipVertically(shipType, size);
} while(status != true);
}
public boolean playGame(){
// Print the board
// 1) write a for loop to iterate through the rows
for (){
// 2) write a for loop to iterate through the columns
for (){
// 3) if grid[column][row] is 'X'
if(){
// 4) print " "+grid[column][row] (use System.out.print)
} else{
// 5) else print " "+WATER_CHAR (use System.out.print)
}
}
System.out.println("");
}
// Ask user for coordinate
// 6) Create a Scanner called sc instantiate it using new Scanner(System.in)
// Ask user to enter a coordinate
System.out.print("Enter a coordinate (col,row): ");
// 7) read in the first integer to an integer called userCol
// 8) read in the second integer to an integer called userRow
// Check if column and row are with in the range of the board
// 9) Check if (userRow is less than 0) or (userRow is greater than or equal to gridRows),
if(){
// 10) use print() method to reveal location of ships
// 11) return false to end game
6. }
// 12) Check if (userCol is less than 0) or (userCol is greater than or equal to gridColumns),
if(){
// 13) use print() method to reveal location of ships
// 14) return false to end game
}
// 15) Check if grid[userCol][userRow] intersects with a ship,
if(){
// 16) set value at userCol, userRow to 'X'
}
// return true to continue playing the game
return true;
}
} Part 3: Modify Battleship Map Creator For this part, you will write a playGame() method that
will print the board, ask a user for a coordinate, check if a ship is at this coordinate and mark an
X for hit. If a coordinate entered is outside the range of the board, show the ships and end the
game. In BattelshipGrid.java: » Locate the playGame() method in the BattelshipGrid.java file ·
write the code for steps 1-16 In Battelship.java: At line 11, comment out aGrid.print(); At line
12, add the following while loop. o while(aGrid.playGame()); » » Please note You can only have
spaces between coordinates when you input them. Otherwise an exception will be thrown » » If
you sink all the ships, the game will not end o For extra practice, add code that will end the game
when all ships are sunk
Solution
package part3;
public class Battleship {
public static void main(String[] args) {
// Generate a grid of 15 columns by 10 rows.
BattleshipGrid aGrid = new BattleshipGrid(10,10);
// Print the grid.
// aGrid.print();
7. while(aGird.playGame());
}
}
package part3;
import java.util.Random;
import java.util.Scanner;
public class BattleshipGrid {
private char[][] grid;
private int gridRows, gridColumns;
static final int CARRIER_SIZE = 5;
static final int BATTLESHIP_SIZE = 4;
static final int SUB_SIZE = 3;
static final int DESTROYER_SIZE = 3;
static final int PATROL_SIZE = 2;
static final char CARRIER_CHAR = 'C';
static final char BATTLESHIP_CHAR = 'B';
static final char SUB_CHAR = 'S';
static final char DESTROYER_CHAR = 'D';
static final char PATROL_CHAR = 'P';
static final char WATER_CHAR = '.';
public BattleshipGrid(int columns, int rows){
gridColumns = columns;
gridRows = rows;
// Make a two dimensional array of characters as the grid
grid = new char[gridColumns][gridRows];
// Clear the grid
clear();
// Assign the following ships
assignShip(CARRIER_CHAR, CARRIER_SIZE);
assignShip(BATTLESHIP_CHAR, BATTLESHIP_SIZE);
8. assignShip(SUB_CHAR, SUB_SIZE);
assignShip(DESTROYER_CHAR, DESTROYER_SIZE);
assignShip(PATROL_CHAR, PATROL_SIZE);
}
// Clear the grid
public void clear(){
for (int row=0; row < gridRows; row++){
for (int column=0; column < gridColumns; column++) grid[column][row] =
WATER_CHAR;
}
}
// Print the grid
public void print(){
for (int row=0; row < gridRows; row++){
for (int column=0; column < gridColumns; column++)
System.out.print(grid[column][row]);
System.out.println("");
}
}
// Assign a ship horizontally on the grid
private boolean assignShipHorizontally(char shipType, int size){
/*
1.2 If horizontal, select a random row to place the ship.
o Select a random column position to start “growing� your ship. The column position
must be less than 10-size of the ship to ensure the ship will fit.
o Look at the next adjacent squares on the grid row to see if they are blank.
o If any of the squares are not blank then the ship will not fit so go back to 1.1.
o If the ship does fit then mark it with its designation.
*/
// Select a row and a starting column to place a ship horizontally
Random randomGenerator = new Random();
9. int chosenRow = randomGenerator.nextInt(gridRows);
int startingColumn = randomGenerator.nextInt(gridColumns-size);
// Count consecutive grid locations horizontally and see if we can accommodate ship
int countSegments = 0;
for (int c = startingColumn; c < startingColumn+size; c++){
if (grid[c][chosenRow] == WATER_CHAR) countSegments++;
}
// If ship will fit then allocate the ship horizontally
if (countSegments == size){
for (int c = startingColumn; c < startingColumn+size; c++){
grid[c][chosenRow] = shipType;
}
return true;
}
return false;
}
// Assign the ship vertically on the grid
private boolean assignShipVertically(char shipType, int size){
/*
1.3 If vertical, select a random column to place the ship.
o Select a random row position to start “growing� your ship. The row position must
be less than 10-size of the ship to ensure the ship will fit.
o Look at the next adjacent squares on the grid column to see if they are blank.
o If any of the squares are not blank then the ship will not fit so go back to 1.1.
o If the ship does fit then mark it with its designation.
*/
// Select a column and a starting row to place a ship vertically
Random randomGenerator = new Random();
int chosenColumn = randomGenerator.nextInt(gridColumns);
int startingRow = randomGenerator.nextInt(gridRows-size);
// Count consecutive grid locations vertically and see if we can accommodate ship
10. int countSegments = 0;
for (int r = startingRow; r < startingRow+size; r++){
if (grid[chosenColumn][r] == WATER_CHAR) countSegments++;
}
// If ship will fit then allocate the ship vertically
if (countSegments == size){
for (int r = startingRow; r < startingRow+size; r++){
grid[chosenColumn][r] = shipType;
}
return true;
}
return false;
}
// Assign a ship to the grid
private void assignShip(char shipType, int size){
Random randomGenerator = new Random();
boolean status = false;
do{
// Randomly choose between horizontal and vertical allocation.
// Sometimes an allocation isnʻt possible so roll the dice and try again.
if (randomGenerator.nextInt(2) == 0)
status = assignShipHorizontally(shipType, size);
else
status = assignShipVertically(shipType, size);
} while(status != true);
}
public boolean playGame(){
// Print the board
// 1) write a for loop to iterate through the rows
for (int row=0;row=gridRows){
11. // 10) use print() method to reveal location of ships
print();
// 11) return false to end game
return false;
}
// 12) Check if (userCol is less than 0) or (userCol is greater than or equal to gridColumns),
if(userCol<0 || userCol>=gridColumns){
// 13) use print() method to reveal location of ships
print();
// 14) return false to end game
return false;
}
// 15) Check if grid[userCol][userRow] intersects with a ship,
if(grd[userCol][userRow]='C' || grid[userCol][userRow]='B' ||
grid[userCol][userRow]='S' || grid[userCol][userRow]='D' || grid[userCol][userRow]='P'){
// 16) set value at userCol, userRow to 'X'
grid[userCol][userRow]='X';
}
// return true to continue playing the game
return true;
}
}