Category: java

ENTD380 Assignment 4

Assignment Instructions
Instructions:
* Make sure you go to this week’s chapter lesson for more guidance. 

For this assignment, you will create an object class then display its assigned values from the main method of the main class.

Save the code in jGRASP, then save it in c:myjava and run it.

/*******************
  Name:

  Date:

Notes:   
*******************/

class Car
{
add content and comments
public static String accelerate()
{
  return motion;
  }
}

public class CarObject
{
  public static void main(String[] args)
  {
  add content and comments

}
}

Make sure that you include all source codes and the compiled codes into W4_firstname_lastname.zip.

You must leave me a note in the Submitted Text area on how to compile and run your code.

Assignment One

Hello I am wanting someone to change the gamble class and player class to avoid plagiarism therefore to just change the methods but still make the game run smoothly also if possible make the filepath in the cardgame class have no filepath therefore anyone can run it without changing the filepath manually.

I am in NZ and not sure where this website is from so my price is in NZ so just let me know where you guys are from and we can discuss the conversion

Final Project

Create a secret phrase guessing game similar to hangman in which the user guesses letters in a partially hidden phrase in an attempt to determine the complete phrase. The phrase to be guessed needs to be selected randomly from a list of at least 10 phrases. The clue needs to be presented to the user as a series of asterisks replacing letters to be guessed. Spaces must be in the appropriate locations. Somewhat like Wheel of Fortune be sure when a letter is guessed you fill in all matches regardless of the case.

The minimum requirements are as follows:

A GUI interface of some type is required for this project.

(1) The program must be an application that performs some function. It can be a game or a business application.

(2) The program must include at least one decision and at least one loop. Most projects of any depth will require more.

(3) You must make use of at least one array. This array can be one or two dimensional. It can be an array of objects or a simpler array. You are also welcome to use parallel arrays.

(4) You must have a user defined class and instantiate objects from that class. Be sure most of the “work” in the program is done using methods efficiently, including static methods in the actual application.

(5) The user interface must be easy to understand. There should be no question what is being asked of the user. Remember those using the program will not be as familiar with it as you are. A GUI is required.

(6) Storing and accessing data in a database or text file is required.  However, make sure you handle the problem in the most appropriate way.  If you have an idea for a project but are not sure how to incorporate storing data ask.  Most games or applications with any depth will require data to be stored and retrieved at a minimum.

Student

For this project, each student may choose to work on it individually, in pairs, or in a group of 3 students. In this project, you need to implement a Student class. You may copy the code from your midterm project into this project, if necessary. The class should include the following:

First, the Student class should have the following private attributes/fields/data members:

name
student id
major
gpa
an array of String type named courses to store 10 courses, such as “CS 1400”, “Math 1080”.
an array of String type named courseLetterGrades to store 10 course letter grades, each grade is a String type value such as A, A+, A-, B, B+, B-, C, C+, C-, D, D+, D-, F.
an array of int type named courseCredits to store 10 course credits, each credit is an integer value between 1 and 5.
an array of double type named course4.0ScaleGrades. The mapping from a letter grade to a 4.0 scale grade is given by the following table:
LetterGrades-2-4.0ScaleGrades.png

Second, the Student class should have the following constructors:

a constructor without any arguments
a constructor with two arguments: name and id
Third, the Student class should have the following getters/setters:

a getter for name
a getter for student id
a getter and a setter for major
a getter for gpa
Fourth, the Student class should have the following use-defined methods:

a method void initCourses(String[] values). This method takes an array of String type as the argument and it initializes the courses field with the argument array.
a method void initCourseLetterGrades (String[] values). This method takes an array of String type as the argument and it initializes the courseLetterGrades  field with the argument array.
a method void initCourseCredits  (int[] values). This method takes an array of int type as the argument and it initializes the courseCredits  field with the argument array.
a method void convertLetterGradesTo4.0ScaleGrades(). This method uses the table shown above to convert the letter grades stored in the courseLetterGrades to 4.0 scale grades and save them to course4.0ScaleGrades array.
methods getHighestGrade(), getLowestGrade(), getTotalCredits() to return the highest letter grade, the lowest letter grade, and the total number of credits from the 10 courses.
a method calculateGPA(). This method calculate the student’s gpa (gpa = (4.0 scale grades * credits) / total credits).
a method print(). This method print the student name, id, total credits, and the gpa information.
Finally, the Student class should have a main method, in the main method, do the following:

create two student objects, initial their data members either by user input or by using arrays.
print their information by calling their print() method.

Lines of Action

Introduction
Lines of Action is a board game invented by Claude Soucie. It is played on a checkerboard with ordinary checkers pieces. The two players take turns, each moving a piece, and possibly capturing an opposing piece. The goal of the game is to get all of ones pieces into one group of pieces that are connected. Two pieces are connected if they are adjacent horizontally, vertically, or diagonally. Initially, the pieces are arranged as shown in Figure 1. Play alternates between Black and White, with Black moving first. Each move consists of moving a piece of your color horizontally, vertically, or diagonally onto an empty square or onto a square occupied by an opposing piece, which is then removed from the board. A piece may jump over friendly pieces (without disturbing them), but may not cross enemy pieces, except one that it captures. A piece must move a number of squares that is exactly equal to the total number of pieces (black and white) on the line along which it chooses to move (the line of action). This line contains both the squares behind and in front of the piece that moves, as well as the square the piece is on. A piece may not move off the board, onto another piece of its color, or over an opposing piece.

Initial Board and Moves
Figure 1. (a) Initial position, showing standard designations for rows and columns. (b) Possible moves for the black piece at f3. In (b) the piece at f3 cannot move horizontally to the right because it would be forced to move 4 steps, which would push it off the board. The same piece cannot move vertically up because there are 4 pieces in the vertical line of action and moving 4 steps up would require it to move over enemy pieces

Figure 1b illustrates the four possible moves for a black piece in the position shown. (The examples here are taken from the BoardSpace website.) The move f3-d5 is a capture; all others are ordinary moves. The diagonal moves are all two squares, since there are two pieces along each of the diagonals shown. The horizontal move is four squares because of the four pieces in row 3.

The game ends when one side’s pieces are contiguous: that is, there is a path connecting any two pieces of that side’s color by a sequence of steps to adjacent squares (horizontally, vertically, or diagonally), each of which contains a piece of same color. Hence, when a side is reduced to a single piece, all of its pieces are contiguous. If a move causes both sides’ pieces to be contiguous, the winner is the side that made that move. One can have infinite games, where players just repeat positions indefinitely. We will prevent this with a move-limit rule: if the current move limit is L moves (the default is 60), then after the two sides both make L moves (without either side winning), the game ends in a tie. Our testing will always include time limits; somebody will eventually lose if two players repeat positions many times. Figure 2a shows a final position. Figure 2b shows a board just before a move that will give both sides contiguous pieces. Since the move is White’s, White wins this game.

Initial Board and Moves
Figure 2. End positions. Position (a) is a win for Black. In position (b), White can move as shown, capturing an isolated black piece and giving both players contiguous pieces. Since it is White’s move, however, the result is counted as a winning position for White.

Notation
We’ll denote columns with letters ah from the left and rows with numerals 18 from the bottom, as shown in Figure 1 and Figure 2. The square at column c and row n is denoted cn. A move from c1n1 to c2n2 is denoted c1n1-c2n2
Textual Input Language
Your program should respond to the following textual commands (you may add others). There is one command per line, but whitespace may precede and follow command names and operands freely. Empty lines have no effect, and a command line whose first non-blank character is # is ignored as a comment. Extra arguments to a command (beyond those specified below) are ignored. An end-of-file indication on the command input should have the same effect as the quit command.

new: Abandons the current game (if one is in progress), and clears the board to its initial configuration. Sets the current player to Black. Takes moves alternately from Black and White.
c1r1-c2r2: As indicated under Notation, denotes a move from c1r1 to c2r2 (e.g., b8-b6.) This command is not valid after a game has ended and before the board has been cleared for a new game. The first and then every other move is for the Black player, the second and then every other is for White, and the normal legality rules apply to all moves.
auto P: Causes player P to be played by an automated player (an AI) on subsequent moves. The value P must be “black” or “white” (ignore case”black” or “BLACK” also work.) Initially, White is an automated player.
manual P: Causes player P to take moves from the terminal on subsequent moves. The value of P is as for the auto command. Initially, Black is a manual player.
set CR P N: Depending on P, sets the contents of square CR. P may be black, white, or – (denoting empty). Make N (black or white) the next player to move. As for auto and manual, case is irrelevant. This command is intended for setting up particular positions quickly for testing or study, and is not intended for normal play.
dump: This command is especially for testing and debugging. It prints the board out in exactly the following format:

===
    – b b b b b b –
    w – – – – – – w
    w – – – – – – w
    w – – – – – – w
    w – – – – – – w
    w – – – – – – w
    w – – – – – – w
    – b b b b b b –
Next move: black
===
with the === markers at the left margin and the board indented four spaces. Here, – indicates an empty square, and w and b indicate white or black pieces. Don’t use the two === markers anywhere else in your output. This gives the autograder a way to determine the state of your game board at any point. It does not change any of the state of the program.

seed N: If your program’s automated players use pseudo-random numbers to choose moves, this command sets the random seed to N (a long integer). It has no effect if there is no random component to your automated players (or if you don’t use automated players in a particular game). It doesn’t matter exactly how you use N as long as your automated player behaves identically each time it is seeded with N. In the absence of a seed command, do what you want to seed your generator. The idea behind seed is to make it possible to have reproducible results when testing an AI. For example,

  import java.util.Random;
  Random r = new Random();
  r.setSeed(100000000);
  System.out.println(r.nextInt(100));
  System.out.println(r.nextInt(100));
(The call nextInt(int r) returns an integer between 0 and the r.) When we run this program, we will deterministically get the same output every time. For example, if we get 80 and then 30 printed, the next time we run the program, 80 and 30 will print again, even though the nextInt method returns a “random” number (this is why we officially call these “pseudo-random numbers.”)

limit N Sets the move limit to 2N (initially, it is N=30). If both players make N moves and neither side has won, the game is a draw. The value of N may not be less than or equal to the number of moves made so far by either player.
help: Prints a brief summary of the commands.
quit: Exits the program.
As long as the commands described so far work properly, you may add any additional commands you want.

Errors
Moves must be legal, or your program must reject them without affecting the board. Humans are expected to make errors; your program should ask for another move when this happens. Similarly, your program should respond to other invalid commands by simply reporting the error and prompting for a new command. AIs must never make illegal moves.

Output
Each time the program expects a move from a human player, it should prompt. You may prompt however you please with a string that ends with > followed by any number of blanks (one does not typically print a newline after a prompt.) Write prompts to the standard output. It is probably wise to “flush” System.out explicitly after printing a prompt with

    System.out.flush();
Do not print a > character except as a prompt.

Whenever an AI moves, your program should print the move on the standard output using exactly the following format:

  * a2-c2
(with asterisk shown). Do not print these lines out for a manual player’s moves.

When one side wins, the program should print out one of

* White wins.
* Black wins.
* Tie game.
(also with periods) as appropriate. Do not use the * character in any other output you produce.

Your program should not exit until it receives a quit command or reaches the end of its input.

You are free to produce any other output you want, subject to the restrictions above (which are there to make autograding easier). So, for example, you might want to print the board automatically from time to time, especially when at least one player is an AI. As long as you do so without using the === markers, you are free to produce whatever output you want.

Running Your Program
Your job is to write a program to play Lines of Action. Appropriately enough, we’ll call the program “loa.” To run your program, you’ll type

    java -ea loa.Main [–display] [–log=LOGFILE] [INPUT-FILE [OUTPUT-FILE]]
Here, square braces enclose optional arguments. The –display option applies only if you do the extra-credit GUI. The –log argument specifies a file into which the program writes all the commands and moves entered into it (good for capturing the details of a session). The INPUT-FILE specifies a source of commands; by default it is simply the standard input (generally your terminal). Finally, the OUTPUT_FILE specifies a file to receive output printed by the program; by default it is simply the standard output.

Your Task
The shared repository will contain skeleton files for this project, which you can merge into your repository as usual with

    git fetch shared
    git merge shared/proj2
Be sure to include tests of your program (that is part of the grade). The makefile we provide has a convenient target for running such tests. Our skeleton directory contains a couple of trivial tests, but these do not constitute an adequate set of tests! Make up your tests ahead of time and update your makefile to run them. To help with testing and debugging, we will provide our own version of the program, so that you can test your program against ours (we’ll be on the lookout for illegal moves).

Your AI should at least be able to find forced wins within a small number of moves. Otherwise, we won’t be too particular. In fact, we suggest that you first aim to produce an AI that is simply capable of making legal moves. A forced win in N moves is a situation in which one side can always win after making N moves with proper play, no matter what the opponent does. We’ll eventually run a tournament among programs that pass our tests. If you want to understand how to implement your AI, please watch Lecture 22 (Game Trees).

As usual, we’ll run a style checker on your code. The skeleton contains deliberate style errors that are there to draw your attention to certain things, including skeletons for extra-credit code. Just because you didn’t write the lines that cause them, don’t think you can ignore them. You are responsible for all the code you hand in, regardless of who originally wrote it.

Testing Harness and Staff Solution
There is a staff solution available to play against or to better understand the spec. Type staff-loa on the instructional machines to run it. It takes the same arguments as your solution is supposed to take.

Our testing of your projects will be automated. The testing program will be finicky, so be sure that

    make check
runs your tests on the instructional machines.

The integration test program, test-loa, feeds commands to one or two running programs and passes appropriate moves from one to the other, allowing you to test your program and to test it against another program (such as the staff version). To run test-loa, you’ll use

python3 testing/test-loa TESTFILE-1.in
to run TESTFILE-1.in through your program and

python3 testing/test-loa TESTFILE-1.in TESTFILE-2.in
to run two programs simultaneously so that each one sends all of its AI’s moves (such as “* b4d6” as described previously) to the other program. (Replace “TESTFILE” with the actual name of your test file.)

Each .in file should start with a Unix-style command for running a program preceded by “#*”, such as

#* java -ea loa.Main
(You will probably use just the command command above; the autograder will sometimes replace it with an invocation of staff-loa.) The rest of the .in file is fed to this program as the standard input, except for lines that start with “#*” in the first column, which are special instructions to the testing script.

The command #*time MOVE GAME puts a time limit of MOVE seconds on each move in a game and GAME seconds for one side’s moves in an entire game (i.e., an entire sequence of moves controlled by one of the move/win commands below).
The command #*move means “wait for the program to output an AI move, and then continue with the script.” When used with the two-argument form of test-loa, it also sends this move as input to the other program.
The command #*move/win is intended for use when both players are AIs, and means “wait for the program to output a complete sequence of AI moves, followed by “* … wins.” It does not print either the moves or the “win” message.
The command #*move/win+ is the same as #*move/win, but also prints the “* … wins.” message.
The command #*win+ waits for a “* … wins.” message from the program and prints it.
All lines that don’t start with #* are sent to the program being tested.
A few other commands apply only to the two-argument form of test-loa. They are intended to allow two programs to play each other.

The command #*remote move/win means “Wait for an AI move from the other program, give it to this program, then execute a #*move command. Repeat until one side sends a win message. Do not print the moves or win message.
The command #*remote move/win+ is the same as #*remote move/win, but prints the “win” message.
The idea with these two commands is that one of the two scripts will, at a certain point, contain the commands

#*move
#*remote move/win
and the other will contain

#*remote move/win
so that the first sends a move from its AI to the other program, which then waits for a response from its AI to send back, and so forth.

For the remote commands, both programs should generate “wins” messages, and testloa will check that they are the same.

The test-loa script throws out any other output from either program except for properly formatted board dumps, as are supposed to be produced by the dump command described previously. You can see all the output by running it with

python3 testing/test-loa –verbose TESTFILE-1.in
or

python3 testing/test-loa –verbose TESTFILE-1.in TESTFILE-2.in
which will show all the commands sent to each program and all their output.

The test-loa program will report an error if a program hangs or times out, or if it exits abnormally (with an exception or an exit code other than 0). Finally, if there is a file TESTFILE-1.std or TESTFILE-2.std, make check will check it against the output from the program for TESTFILE-1.in (likewise for TESTFILE-2.std against the output for TESTFILE-2.in); make check uses on the script testing/tester.py to do this comparison.

Checkpoint
Information about the checkpoint is on Piazza here. The checkpoint is due Friday April 3 11:59 PM.

Extra Credit
For extra credit, you can implement the –display option, and play the game using a graphical user interface (GUI). Don’t even think about this until you get your project working! However, you might consider how to structure your solution to make the addition of a GUI simple. The package ucb.gui2 contains classes that make it pretty easy to construct a simple GUI. You will also have to examine the classes java.awt.Graphics and java.awt.Graphics2D to see how to draw things.

We will be manually grading the GUI and awarding points based on this rubric:

2 pt – displays the current board, can make moves
1 pt – can show a help page
1 pt – can undo moves
1 pt – can switch a player (black or white) between AI and manual midway through the game
Advice & Resources
We’ve implemented some fussy bits or possibly useful classes in the skeleton. Always remember, however, that you don’t have to use them. Your job is to provide tests and make java -ea loa.Main conform to the specification, period. If you need random numbers, take a look at java.util.Random and Chapter 11 of Data Structures (Into Java).

I suggest working first on the representation of the board (the skeleton has a class Board, which is supposed to represent the game board and state of play.) We have also included a skeleton Game class that uses Board to keep track of a series of games and interpret commands. Get this to work with a manual (“human”) player first. Then you can tackle writing an automated player MachinePlayer. Start with something really simple (perhaps choosing a legal move at random) and introduce strategy only when you get the basic game-running machinery working properly.

The TAs have created helpful walthrough videos for the numContig method in the Board class, findMove for the MachinePlayer class, and heuristics for the MachinePlayer class. They can be found on Piazza here.

Top Down parser

Your program will read any text file that contains (what is intended to be) a string in the category fun def list. It will then construct an explicit parse tree and display it in a linearly indented form each syntactic category name labeling a node is displayed on a separate line, prefixed with the integer i representing the node’s depth and indented by i blanks. This is a basic form of syntax profiler.

War Card

War

The deck is divided evenly, with each player receiving 26 cards, dealt one at a time, face down. Anyone may deal first. Each player places their stack of cards face down, in front of them. Each player turns up a card at the same time and the player with the higher card takes both cards and puts them, face down, on the bottom of his stack. If the cards are the same rank, it is War. Each player turns up one card face down and one card face up. The player with the higher cards takes both piles (six cards). If the turned-up cards are again the same rank, each player places another card face down and turns another card face up. The player with the higher card takes all 10 cards, and so on. The game ends when one player has won all the cards. Hint: Use math.random to shuffle the deck

Neural Networks

extend the code i have already done in java which creates a back propagation network with 20 inputs, 1 neuron in hidden layer and one output neuron.
This code has to be extended to have an extra hidden layer. Then it has to be tested with 12 different activation functions to see how each of them performs on the input.

If you are able to do this i will provide the code, fully commented.

If you wish you could do it using any other program but in that case the entire network would have to be created from scratch.