讲解:Invadem、Java、Java、game mechanicsSQL|Processing

Assignment 2You are working for a company called PipeDream which produces desktop and mobile games. The companyis currently developing a new game called Invadem. Invadem is a simple shootem up game where the playercontrols a tank that fights off a horde of invading space ships.You have been given the task of building a demo. You will need to implement the tank, barriers, invaders anda single level that will be repeated if the player wins or loses. Additional requirements will be released afteryour milestone submission.An artist has created a simple demonstration of the game and has posted it on your online forum (Ed). Usethis demo to help layout your entities and develop your game mechanics.Project and BuildYou have been given a scaffold which will help you get started with this assignment. You can download thescaffold onto your own computer and invoke gradle build to compile and resolve dependencies.You will be using the Processing library within your project to allow you to create a window and drawgraphics. You can access the documentation from the following linkGame Objects and MechanicsThe project contains a number of entities that will need to be modelled within your application. You havebeen provided some basic test cases to help develop and implement their functionality.TankThis is a player controlled entity that can be moved by pressing the left and right arrow keys on the keyboardand moves at a rate of 1 pixel per a frame . The tank is 22x16 pixels, it starts at the bottom-middle of thedisplay. A tank can fire projectiles which can hit the barriers or enemy invaders. It can shoot multipleprojectiles towards the invaders. In addition to moving the tank with left and right arrow keys, the player canfire projectiles using the space key. If an enemy projectile hits the tank, it will lose a hit point, if the tank is hit 3times, the game should transition to a Game Over screen since the tank has been destroyed.InvaderEach invader has a unique starting position but move in time with every other invader. The invader swarmmoves from the top-middle of the screen to the players barriers. Once an invader has reached the barriers,the game should transition to a Game Over screen.Invaders will move 30 steps in one direction before moving down and heading 30 steps in the other direction.Each sideways step will constitute a movement of 1 pixel, each step is made every two frames. When aninvader moves downward, it will move 8 pixels down and transition to its other sprite.The invaders are part of a larger swarm, the swarm starts with 40 invaders (10 invaders per row, 4 rows). Eachinvader is 16x16 pixels, this will correspond with the size of their sprites. They will have the same collisionarea as their sprites.Once an invader is hit, it is considered to have been destroyed and should no longer be rendered by thegame. When all invaders have been hit, this will result in the player winning the game and transitioning to theNext Level screen.Every 5 seconds, an invader will be randomly selected to fire a projectile downwards.BarrierA barrier is composed of 7 different components, each component can sustain 3 hits. Once a component hasbeen destroyed, it no longer offers protection for the tank. When a barrier sustains a hit, it will change to adifferent sprite, indicating that it has been damaged. The player is provided with 3 barriers, each barrier, leftbarrier is at least 20 pixels away from the left boundary described in the application section, the center barrierstarts in the centre of the screen, right barrier is at least 20 pixels away from the right boundary. Each barrieris at least 10 pixels above the tanks location.A barrier can be hit by the tank and an invader.ProjectileA projectile can be fired by both the tank and an invader, however, an invaders projectile will not hit any otherinvader (only the barrier and tank). The tank can hit the barrier as well as any invader. Once a projectileimpacts with another entity, it will cease to exist.The projectile is 1x3 pixels and travels upwards 1px per frame.Game ConditionsThe goal of the game is for the player to destroy all invaders before either the tank is destroyed or theinvaders land.The player wins when the following conditions have been met:All invaders are destroyed.The computer wins when one of the following conditions have been met:An invader reaches the barriers (10px away from the barriers).The tank is hit 3 times and destroyed.ApplicationYour application will need to adhere to the following specification640 width 480 height window with a black background.Left boundary (tank cannot move past this point) at x 180, Right boundary at x 460.Must maintain a frame rate of 60 frames per second.Your application must be able to compile and run on any the university lab machines using gradlebuild & gradle runFailure to do so, will result in 0% for Final Code Submission.Your program must not exhibit any memory leak, try to load all assets prior to usage.You must use the processing library, you cannot use any other framework such as javafx, awt or jogl.AssetsArtists within the company have produced sprites for your game. You have been provided a /resourcesfolder which your code access directly. These assets are loadable using the loadImage method attached thePApplet type. Please refer to the processing documentation when loading and drawing an image.Algorithms that may come in handy!It is likely you will need to utilise the following algorithms and patterns within your project. You will need toidentify where you will utilise these algorithms and document them in your report.Collision Detection (AABB)Since all entities within the game can contain an axis aligned bounding box. You may implement the followingcollision detection method.Assume the following variables (r1, r2) have the properties: x, y, width, height.AnimationYou have been given sprites to associate to entities. Due to the simplicity of the game there isnt a lot ofanimation that is required but you may find it beneficial to maintain an animation state within each entity.Each entity will contains a list of sprites which can be swapped to.check_collection(r1, r2):if ( r1.x ( (r1.x + r1.width) > r2.x ) and( r1.y ( (r1.height + r1.y) > r2.y )://Collision has been detectedreturn true;else:return falseAnimationData {s代做Invadem、Java编程设计调试、Java语言代写、prites[];currentSpriteIndex;delay;tick() {//Action to take on a draw call//use information to delay a sprite transition//Loop around if index >= length of sprites}}Marking Criteria (12%)Your final submission is due on 10th of November at 11:59PM AEST. Please make sure you submit your codeto Ed and your report to Canvas.Final Code Submission (5%)You will need to have implemented and satisfied requirements listed in this assignment. Make sure youhave addressed the following and any other requirements outlined previously.Window launches and shows black backgroundTank is rendered and can be moved by the userInvaders are rendered, move according to the pattern described and change sprites on movementBarriers are rendered, can be hit by both tank and invaderWin condition can be reached by the playerLoss condition can be reached by the computerEnsure your application does not repeat large sections of logic, try to minimise repetition.Ensure your application code exhibits good OO principles (Utilising inheritance, interfaces andclasses effectively)Additional requirements will be announced after the milestone deadline which will need tobe implementedMilestone (1%)To ensure progress has been made within on your project. You will need to submit a working submissionof your project by Tuesday on October 29th by 11:59pm AEST.You must achieve the following:Draw the tank on the screen.At least one invader is drawn in its starting position.At least one barrier is set up.The tank can be moved using left and right arrow keys.However, try to aim to complete as much as you can so your tutor can provide as much feedback onyour milestone submission.Additional Test Cases (2%) During development of your code, add additional test cases to your projectand test as much functionality as possible. You will need to construct unit test cases within the src/testfolder.To test the state of your entities without drawing, implement a simple game loop that will update thestate of each object but not draw the entity.Some suggestion for test cases you should create:Tank (movement, change sprites, fires projectile, intersection, state changes)Projectile (checks for intersection, travel velocity)Invader (checks movement pattern, projectile firing, state change)Barrier (It can be hit, changes state after hit, can be hit by different entities, its current placement in theapplication)Code coverage, common and corner casesEnsure your test cases cover over 90% of execution paths (Use jacoco in your gradle build)Ensure your test cases cover common cases.Ensure your test cases cover edge cases.Each test cases must contain a brief comment explaining what it is testing.Design, Report and Comments (3%), (400 words minimum, 1200 words maximum) You will need tosubmit a report that elaborates on your application design and development progress. Please include:Documentation on your progress, highlighting what you have identified from the problemdescription, requirements gathering and how you have represented concepts within yourapplication.Provide a high level overview of your implementationFor each class created, state what you used it for and why it was incorporated into your design.Highlight changes you have made after the milestone submission, identifying how your initial designat the milestone hindered or helped your final submission.Reflection, highlight issues that you encountered while modelling your application and anyimprovements you can identify.Your code should be clear, well commented and concise, try not to repeat yourself and utilise OOPconstructs within your application.Your code should be easy to follow, help the reader and avoid distraction. The code and designshould aim provide a cohesive layout and concise comments; well chosen names; and idiomatic useof the Java languageExtension (1%) You really want to impress! Add an additional feature to the game. We have providedsome extension ideas but you are free to implement your own extension, please check with your tutorfor approval.You will need to outline your extension idea within your report so the marker knows what to look for.Some ideas that you can implement:2 Player mode, two players can play the game at the same time on the same computer, this tankwill be using a different sprite to the one provided.Network play, Your game can create a server where two people can play the game from differentcomputers.Add sound effects to your game, make those visual pop with some sound effects.Warning : Any attempts to deceive or disrupt the marking system will result in an immediate zero for theentire assignment. Negative marks can be assigned if you do not properly follow the assignment specification,or your code is unnecessarily or deliberately obfuscated.Academic DeclarationBy submitting this assignment you declare the following:I declare that I have read and understood the University of Sydney Student Plagiarism: Coursework Policy andProcedure, and except where specifically acknowledged, the work contained in this assignment/project is my ownwork, and has not been copied from other sources or been previously submitted for award or assessment.I understand that failure to comply with the Student Plagiarism: Coursework Policy and Procedure can lead to severepenalties as outlined under Chapter 8 of the University of Sydney By-Law 1999 (as amended). These penalties maybe imposed in cases where any significant portion of my submitted work has been copied without properacknowledgement from other sources, including published works, the Internet, existing programs, the work of otherstudents, or work previously submitted for other awards or assessments.I realise that I may be asked to identify those portions of the work contributed by me and required to demonstratemy knowledge of the relevant material by answering oral questions or by undertaking supplementary work, eitherwritten or in the laboratory, in order to arrive at the final assessment mark.I acknowledge that the School of Computer Science, in assessing this assignment, may reproduce it entirely, mayprovide a copy to another member of faculty, and/or communicate a copy of this assignment to a plagiarismchecking service or in-house computer program, and that a copy of the assignment may be maintained by theservice or the School of Computer Science for the purpose of future plagiarism checking.转自:http://www.3daixie.com/contents/11/3444.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容