首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
CPSC 219代做、代写Java语言设计
项目预算:
开发周期:
发布时间:
要求地区:
CPSC 219: Introduction to Computer Science II
Assignment 1: Procedural Java – Snake Game
Course: CPSC233S24
Due Date: Friday, Sept. 27, 2024
Instructor: Steve Sutcliffe
Version: 1.1.1
Weight: 10%
Objective:
Write a Java program with a standard procedural structure and save the work to a repository.
Group Size: 1‐2
This assignment can be completed independently, or you may pair with another individual from the same tutorial. You and your partner must write all the code you submit. Refer to the plagiarism guide at the end of this document for more details. You and your partner should be able to answer any questions about the codebase and fully understand what the code is doing. Individual marks may differ from the overall assignment grade based on how well you can answer these questions. If working with a partner, you and your partner must submit a solution to D2L. If a Git repository is required, you may use the same repository or separate repositories.
Technology
Java (JDK) 22, Git
Submission instructions
You must submit your assignment electronically in D2L, commit it to a repository in GitLab (csgit.ucalgary.ca), and have all of the TAs and instructors set as developers on the repository.
Submit your completed SnakeGame.java to D2L. Do not submit *.class files or any other files. Include your name and UCID at the top (and your partner’s if you have one). Additionally, submit a text document with the link to your repository (name the document gitlink.txt).
Please use the Assignment 1 Dropbox in D2L to submit your codebase. This submission must include all required .java files, which will be listed later. If you complete this assignment with a partner, you and your partner must submit the assignment to the Assignment 1 Dropbox in D2L.
In D2L, you can submit multiple times over the top of a previous submission. Do not wait until the last minute to attempt to submit! D2L is notorious for glitches and hangups at the 11th hour.
Your assignment must be completed in Java (not Kotlin or others) and executable with Java version 22 (JDK 22). You must only use standard libraries. Failure to submit the required .java files in D2L will be treated as a non‐ submission for the assignment. TAs will not grade .class files and will not make requests for missing files. Do not submit complete IntelliJ project folders in D2L.
Overview
You will complete a Java program that simulates a simplified version of the classic Snake game. The game's objective is for the player to navigate the snake around a grid, eating food to grow longer while avoiding collisions with the walls or itself. Your program must adhere to procedural programming principles and use global variables to maintain the game state. You will create one Java file: SnakeGame.java. The program will be text‐based and should use methods from both files to function correctly.
Game Description
In this simplified Snake game, the player controls a snake that moves around a grid. The snake grows longer each time it eats food, and the game ends if the snake collides with itself or the walls.
Game Specifications:
GAME BOARD
The game grid will be 20 (wide) x 10 (tall), and the walls will be marked with ‘#’ symbols.
THE SNAKE
The snake is represented by one or more ‘S’ characters. Whenever the game starts, it should start at a random location. When the game first starts, the length of the snake is 3. However, only the head is visible as the player moves, the remaining segments of the snake become visible. Whenever the snake eats a fruit (the ‘@’) the snake will grow in length (up to a maximum of 100 segments). If the snake hits a wall (the ‘#’) or itself the game ends.
The player can move the snake up, down, left, or right using the ‘w’, ‘a’, ‘s’, ‘d’ keys and they can quit the game using the ‘q’ key.
FOOD
The food is represented by an ‘@’ character and appears at random locations, but it cannot appear on the snake (S) or on the walls (#).
THE WALLS
The walls form the perimeter of the game board, and are represented by the ‘#’ symbol. The food and segments of the snake cannot be on the wall. A segment of the wall must be at 0,0 (see achievements).
EXAMPLE
Below is an example of the first few steps in the game:
####################
#..S...............#
#..................#
#..................#
#....@.............#
#..................#
#..................#
#..................#
#..................#
####################
Enter: w/a/s/d/q
s
####################
#..S...............#
#..S...............#
#..................#
#....@.............#
#..................#
#..................#
#..................#
#..................#
####################
Enter: w/a/s/d/q
s
####################
#..S...............#
#..S...............#
#..S...............#
#....@.............#
#..................#
#..................#
#..................#
#..................#
####################
Enter: w/a/s/d/q
s
####################
#..................#
#..S...............#
#..S...............#
#..S.@.............#
#..................#
#..................#
#..................#
#..................#
####################
Enter: w/a/s/d/q
d
####################
#..................#
#..................#
#..S...............#
#..SS@.............#
#..................#
#..................#
#..................#
#..................#
####################
Enter: w/a/s/d/q
d
####################
#..................#
#.................@#
#..S...............#
#..SSS.............#
#..................#
#..................#
#..................#
#..................#
####################
Requirements
Global Variables: Use global variables to maintain the game state, including the snake's position, the length of the snake, and the game grid.
Procedural Design: Your implementation must be procedural without custom classes and objects.
Documentation: Provide clear comments and documentation within your code explaining each function's functionality and the program's overall structure.
Display: in the console, display the game grid, the food and the snake
User Interaction: Input commands to move the snake ('w' for up, 's' for down, 'a' for left, 'd' for right, ‘q’ to quit).
Check for collisions and generate new food after the snake “eats” the existing food.
End the game when the snake collides with the walls or itself.
The snake should start as three segments long and should “grow” (add another segment) each time after it “eats” the food.
A starting file has been provided for you. You must use the variables and methods present in that file (e.g., initializeGame()), but you can add any additional variables and methods you need.
Demonstration
You must demonstrate your assignment to the tutorial leader to receive a mark for this assignment. The tutorial leader will ask questions to test your understanding of your submitted code. Your assignment will receive an F if you cannot sufficiently answer any of the questions from a TA or instructor. A demo is required in order to receive any grade for this assignment.
Grading
You will receive a B‐grade if you complete everything this assignment requires. You can complete additional requirements to improve your grade beyond a B+ (see the A Grade Range Requirements). These additional tasks are designed to challenge you further and provide an opportunity to demonstrate a deeper understanding of the material and greater skill.
The most important part of these assignments is your understanding of the code. You need to be able to demonstrate that you understand the code you are submitting. Failure to explain your code will be considered a case of copying code from another source (ChatGPT, another student, etc.) and qualify for academic misconduct.
B GRADE RANGE REQUIREMENTS:
Submission Complete: The assignment was submitted on time to D2L with all required files (SnakeGame.java and gitlink.txt) and a link to GitLab with the TAs and instructor as developers.
Functionality: The program works as required and meets the specifications (initializing the game, displaying the grid, moving the snake, and generating food).
Code Base: All of the required methods and variables are present and the code makes logical sense. Code Documentation: Code is well documented.
Demonstration: The student satisfactorily answers the tutorial leader's questions about the code and clearly understands the implementation.
A GRADE RANGE REQUIREMENTS
To improve your grade beyond a B, you need to complete all of the tasks outlined in the B Grade Range Requirements and the additional tasks below. The TAs will not help you with these.
Obstacles: Add random obstacles ('%') to the grid that the snake must avoid. These obstacles should not move but provide additional challenges for navigation.
Wrap‐Around Movement: Implement wrap‐around movement so that the snake can move off one grid edge and reappear on the opposite edge in areas with gaps in the wall (you will also need to implement the gaps in the wall).
C GRADE RANGE REQUIREMENTS
Submission: The assignment is submitted on time to D2L with all required files and a link to the repository with the TAs and instructor as developers.
Code Explanation: The student satisfactorily answers the tutorial leader's questions about the code and clearly understands the implementation.
One or more of the following apply:
Limited Functionality: The game grid displays the walls, the food and the starting location of the snake, but other functionality is missing or broken.
Limited/No Documentation: Significant parts of the code are not adequately documented.
Code Quality: The code breaks a few of the requirements (e.g., methods and variables required to be used, or is not procedural, etc).
D Grade Range
Significant portions of the program are missing or broken, however, required files were submitted. Explanations of the code are poor.
F Grade
Submission was missing or the student is not able to answer the questions of the TA adequately.
LATE POLICY
The following late policy from SENG300 will be used if you are out of the five grace days:
assessment_grade = raw_grade * (1 – max(0, (hours_late ‐ 1) / 47))
This means there is a maximum of 1 hour grace period before the penalties begin. After 48 hours, the assignment is worth 0.
INCOMPLETE
This assignment will be marked as “Incomplete” if any of the conditions below apply to your assignment. If your assignment is incomplete, you must submit the missing components within two days. Failure to submit incomplete assignment components will result in an (F) for that assignment. Each missing component will decrease your letter grade for the assignment by half a letter grade step.
Incomplete conditions:
GitLab repo incomplete (missing link, TAs and instructor not established as a developer)
Required *.java files missing in D2L
Required *.java files missing in the repository
Plagiarism
Discussing the assignment requirements with others is reasonable and an excellent way to learn. However, the work you hand in must ultimately be your work. This is essential for you to benefit from the learning experience and for the instructors and TAs to grade you fairly. Handing in work that is not your original work but is represented as such is plagiarism and academic misconduct. Penalties for academic misconduct are outlined in the university calendar.
Here are some tips to avoid plagiarism in your programming assignments.
1. Cite all sources of code you hand in that are not your original work. You can put the citations into comments in your program. For example, if you find and use code found on a website, include a comment that says, for example:
# The following code is from
Use the complete URL so that the marker can check the source.
2. A tool like chat‐GPT can be used to improve small code blocks. For example, five lines of code. If you get help from code assistance like Chat‐GPT, you should comment above the block of code you requested assistance on debugging or improving and cite the tool used to get that suggestion. Using a tool like chat‐ GPT to write the majority of your assignment requirements will be treated as plagiarism if found without citation, and with citation, it will be treated as 0 for the component the student did not complete. Code improvement of short length will get credit if commented/cited properly.
3. Citing sources avoids accusations of plagiarism and penalties for academic misconduct. However, you may still get a low grade if you submit code not primarily developed by yourself. Cited material should never be used to complete core assignment specifications. Before submitting, you can and should verify any code you are concerned about with your instructor/TA.
4. Discuss and share ideas with other programmers as much as you like, but make sure that when you write your code, it is your own. A good rule of thumb is to wait 20 minutes after talking with somebody before writing your code. If you exchange code with another student, write code while discussing it with a fellow student, or copy code from another person’s screen, this code is not yours.
5. Collaborative coding outside your team is strictly prohibited. Your assignment submission must be strictly your code. Discussing anything beyond assignment requirements and ideas is a strictly forbidden form of collaboration. This includes sharing code, discussing the code itself, or modelling code after another
student's algorithm. You cannot use (even with citation) another student’s code.
6. Making your code available, even passively, for others to copy or potentially copy is also plagiarism.
7. We will look for plagiarism in all code submissions, possibly using automated software designed for the
task. For example, see Measures of Software Similarity (MOSS ‐ https://theory.stanford.edu/~aiken/moss/).
8. Remember, if you are having trouble with an assignment, it is always better to go to your TA and/or instructor for help rather than plagiarizing. A common penalty is an F on a plagiarized assignment.
9. See the Course Outline for the policy on Generative AI use (such as ChatGPT). Generally, you can use ChatGPT to help understand concepts and to debug code. Always cite your use of Generative AI and explain what the code does.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!