BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//American Young Coder - ECPv6.10.1.1//NONSGML v1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:American Young Coder
X-ORIGINAL-URL:https://www.ayclogic.com
X-WR-CALDESC:Events for American Young Coder
REFRESH-INTERVAL;VALUE=DURATION:PT1H
X-Robots-Tag:noindex
X-PUBLISHED-TTL:PT1H
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:20210314T100000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:20211107T090000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:20220313T100000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:20221106T090000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:20230312T100000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:20231105T090000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20230708T150000
DTEND;TZID=America/Los_Angeles:20230708T160000
DTSTAMP:20260512T054312
CREATED:20230708T230356Z
LAST-MODIFIED:20230708T233338Z
UID:20496-1688828400-1688832000@www.ayclogic.com
SUMMARY:3 PM - Adv Python Game Dev - Gamas
DESCRIPTION:Today We Did\n\nWe setup SAT-3PM-TOD project.\nWe created gitlab project and clone them and checkout individual branches.\nAdded background and Enemy class.\n\nHomework\n\nInside Enemy class\, resize the image according to the size parameter. figure out the size your self so it will fit the road in the background image. When you resize\, make sure the height is bigger than the width.\nDisplay the Enemy on the screen on the bottom side of the road.\nAnimate the enemy sprite so it will load from 2_enemies_1_RUN_000.png to 2_enemies_1_RUN_009.png. Use for loop in range to produce the right filename suffix and load all the images.
URL:https://www.ayclogic.com/event/3-pm-adv-python-game-dev-gamas/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220618T130000
DTEND;TZID=America/Los_Angeles:20220618T140000
DTSTAMP:20260512T054312
CREATED:20220618T210233Z
LAST-MODIFIED:20220618T210300Z
UID:13603-1655557200-1655560800@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the cancel purchase button and music.\nWe fixed the bug where clicking on the towers for purchase deducted more coins\nWe added logic so bullets hitting the enemy didn’t kill them immediately but ony when their health goes to zero.\n\nHomework: \n\nAdd a game over page\, it should look like this:\n\nWhen the health attribute goes to zero\, switch the game “self.mode” attribute to GAME_LOST\, and display the game over page.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-63/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220611T130000
DTEND;TZID=America/Los_Angeles:20220611T140000
DTSTAMP:20260512T054312
CREATED:20220611T210310Z
LAST-MODIFIED:20220611T210310Z
UID:13474-1654952400-1654956000@www.ayclogic.com
SUMMARY:SAT - 1 PM - Advanced Python Game Development - Chet
DESCRIPTION:Today We Do\n\nWe reviewed the homework.\nWe enabled multiple waves of enemies.\nWe make the player’s health decrease when enemies is off the screen and still alive.\nWe hide hotspot when there is no floating towers.\n\nHomework\n\n\n\nAdd the “assets/images/cancelPurchaseButton.png” appear on the screen on the left side of the Towers for purchase when there is a floating tower.\nWhen you click on the “Cancel Purchase” button\, make the floating tower disappear and return the money to self.coins. self.floating_tower_group.sprites()[0].kill()\nAdd background song for your game. Go to opengameart.org and find a good song for your game. Find the .wav file and add it to your assets folder and play it when the game is in session.
URL:https://www.ayclogic.com/event/sat-1-pm-advanced-python-game-development-chet/
CATEGORIES:Advanced Python Game Development,Python Class
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220604T130000
DTEND;TZID=America/Los_Angeles:20220604T140000
DTSTAMP:20260512T054312
CREATED:20220604T211627Z
LAST-MODIFIED:20220604T211647Z
UID:13376-1654347600-1654351200@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add custom shooting tower images and collision detection logic between bullets and enemies\nWe added logic so different towers shoot their corresponding bullet images.\nWe added a coins indicator showing the number of coins left.\nWe added an indicator for each tower for purchase to show its cost\nWe added logic so as each tower is purchased it detects the number of coins available\n\nHomework: \n\nAdd logic so that each enemy that gets killed increases your “self.coins” attribute by the “self.coin_drop” in each enemy.  Define a new method called “self.handle_bullet_enemy_collision” and make sure it gets called from the “pygame.sprite.groupcollide” function to increase your number of coins.\nAdd a health indicator that shows the amount of health YOU have before losing the game.  This should be similar to the coins indicator\, you can call it “draw_health”.\nAdd a health indicator to each enemy that shows the amount of health left for each enemy given by the “self.health” attribute in each enemy.  This should follow the enemy along similar to how the price indicator follows the floating tower for purchase as you move it:
URL:https://www.ayclogic.com/event/1-pm-python-game-development-62/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220521T130000
DTEND;TZID=America/Los_Angeles:20220521T140000
DTSTAMP:20260512T054312
CREATED:20220521T210321Z
LAST-MODIFIED:20220521T210700Z
UID:13150-1653138000-1653141600@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to create the bullet sprite.\nWe added logic so the shooting tower could shoot bullets.\nWe added different tower for purchases.\n\nHomework: \n\nAdd collision detection between the bullet and the enemies.  Keep it simple so when there’s a collision the enemy and bullet gets destroyed.\nUpdate ShootingTower so that we show the same tower image as whatever the floating tower for purchase was showing before placing it on the tower hotspot.\n\nWe will have no class on Saturday May 28.  See you again on Jun 4th!
URL:https://www.ayclogic.com/event/1-pm-python-game-development-61/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220514T130000
DTEND;TZID=America/Los_Angeles:20220514T140000
DTSTAMP:20260512T054312
CREATED:20220514T210253Z
LAST-MODIFIED:20220514T210253Z
UID:13058-1652533200-1652536800@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add a type to the enemy.\nWe added the tower hotspot sprite.\nWe added the ShootingTower sprite.\nWe went over how to create the shooting tower when the floating tower collides with the target.\n\nHomework: \n\nReview the “bullet.py” file in tank-game.\nCreate a new Sprite called “Bullet” that takes x\, y\, size\, direction\, screen as parameters. The direction is the angle in degrees similar to what we used for “Bullet” sprite in the tank game project.\nCreate a bullet_group attribute in main.py\, and test you can add some bullets to it and they appear on the landing page screen.  Test you can create a custom bullet anywhere on the screen.  Play around with the degrees parameter to confirm bullets get rotated and move in the direction specified.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-60/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220430T130000
DTEND;TZID=America/Los_Angeles:20220430T140000
DTSTAMP:20260512T054312
CREATED:20220430T210839Z
LAST-MODIFIED:20220430T210905Z
UID:12779-1651323600-1651327200@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework and added the landing page and added the target pointer sprite\nWe added waves and a way to keep track of the current wave.\n\nHomework: \n\nUpdate “create_enemy” to add a timer.  You can define a ENEMY_CREATION_DELAY of 40 frames and a new attribute enemy_creation_timer that keeps track of when it’s possible to create a new enemy.  Create a new enemy when enemy_creation_timer is equal or less than zero and the current wave has enemy types in it.\nAdd animation to the Enemy sprite.  Get rid of the self.image attribute and create a new self.images attribute that uses all 9 images from “2_enemies_1_WALK_000.png” to “2_enemies_1_WALK_009.png”.  Use similar techniques that we used for animation previously to alternate sequentially between all the different images in self.images to determine which image gets drawn on the screen.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-58/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220423T130000
DTEND;TZID=America/Los_Angeles:20220423T140000
DTSTAMP:20260512T054312
CREATED:20220423T211744Z
LAST-MODIFIED:20220423T211744Z
UID:12647-1650718800-1650722400@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the enemy sprite.\nWe added the logic to move the enemy on the map.\n\nHomework: \n\nCreate a new sprite class called “TargetPointer” which has a single parameter the screen.  The target pointer should move to the location of the mouse.  Use the “assets/images/target.png” image for the target pointer.  Make sure the target pointer has a rect attribute for collision detection which we will use later.  You can use the code we use for the play button to determine the location of the mouse and where the target is drawn on the screen.\nAdd a game landing page and a play button.  Use “button_play.png” for the play button and “logo.png” for the landing page logo
URL:https://www.ayclogic.com/event/1-pm-python-game-development-57/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220406T190000
DTEND;TZID=America/Los_Angeles:20220406T200000
DTSTAMP:20260512T054312
CREATED:20220407T033424Z
LAST-MODIFIED:20220407T033505Z
UID:12373-1649271600-1649275200@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the game won and game over pages.\nWe added 3 different tower types for the tower for purchase\, tower and bullet.\n\nHomework: \n\nMake sure that the sword tower spawns fireball bullets in 8 different directions.  It should look like this:\n\n\n\n\nReview the code for tower of defense and come up with some questions.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-116/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220326T130000
DTEND;TZID=America/Los_Angeles:20220326T140000
DTSTAMP:20260512T054312
CREATED:20220326T210928Z
LAST-MODIFIED:20220326T210940Z
UID:12206-1648299600-1648303200@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over homework to add the game over page.\nWe went over how to reset the game after clicking the play button.\nWe added logic to modify the map so that the enemy tank finds a faster path through the map after destroying some bullets.\nWe used “copy.deepcopy” to make a copy of the MAP and store it in the self.map_copy attribute so that we can reset the MAP when clicking the play button again.\n\nHomework: \n\nAdd collision detection between the shield group and the enemy bullet group so the the shield protects the play from the enemy tank’s bullets.  The shield shouldn’t be destroyed when a bullet hits it\, but the bullet should be destroyed.\nAdd some logic so that the shield disappears after a certain number of frames\, maybe 10 seconds or 400 frames.  You can use the similar technique we used before for timers e.g. in launching_bullet.\nAdd some sounds effects when the player tank or enemy tank shoot a bullet.  Use the “assets/audio/TankFiring.wav” file.  You can use examples for previous projects how to load a sound and play it from a collided method/callback.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-54/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220323T190000
DTEND;TZID=America/Los_Angeles:20220323T200000
DTSTAMP:20260512T054312
CREATED:20220324T033417Z
LAST-MODIFIED:20220331T015654Z
UID:12166-1648062000-1648065600@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the coins indicator.\nWe added the start waves button.\nWe added code for handling enemy waves.\n\nHomework: \n\nAdd configs for three different enemy types: ENEMY_1\, ENEMY_2\, ENEMY_3.\nInside enemy.py sprite\, depending on the enemy_type\, load a different image corresponding to the name of the directory.\nMake sure that you can load different enemy types with the three series of image animation where the given type of enemy is walking.\nBonus: create a new method called “create_enemy_with_timer”. If the self.current_wave attribute has a length greater than three then create a new enemy.  Use the self.current_wave.pop() method to make the current wave smaller and look up the next enemy_type.  Delay the creating of enemies using the timer technique.  Don’t try to pop more enemy_types and create more enemies if self.current_wave is empty.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-114/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220319T130000
DTEND;TZID=America/Los_Angeles:20220319T140000
DTSTAMP:20260512T054312
CREATED:20220319T211035Z
LAST-MODIFIED:20220323T031025Z
UID:12090-1647694800-1647698400@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today:\n\nWe went over the homework to make the enemy tank fire the bullet.\nWe visualized the maze solver’s path by creating a white dot for each node coordinate.\nWe used the direction of the second node in the path from the maze solver to determine which way to move the enemy tank.\nWe fixed the bug where the maze solver thinks the enemy tank only takes up once map cell.\n\nHomework:\n\nAdd collision detection between the enemy bullets and the player tank.\nCreate a new game mode called GAME_OVER.\nWhen the game mode is GAME_OVER show game_over page which should look like this:\n\n\n\n\nWhen the enemy tank shoots the player tank change the game mode to be GAME_OVER.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-53/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220312T130000
DTEND;TZID=America/Los_Angeles:20220312T140000
DTSTAMP:20260512T054312
CREATED:20220312T220320Z
LAST-MODIFIED:20220312T220959Z
UID:11984-1647090000-1647093600@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today \n\nWe went over the homework to add the game won page.\nWe added logic so the enemy tank is recreated after winning the game.\nWe added the maze_solver and imported it in the enemy tank.\n\nHomework: \n\nCreate a new sprite group called enemy_bullet_group that will hold bullets shot from the enemy tank.\nAdd a method called launch_enemy_bullet which fires a bullet from the self.enemy_tank.  You adapt the logic from self.launch_bullet method.   You shouldn’t need to click the mouse to launch the enemy bullet successfully.  Create a Bullet with the correct direction and then add it to the self.enemy_bullet_group.  Make sure the enemy bullets get drawn on the screen.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-52/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220309T190000
DTEND;TZID=America/Los_Angeles:20220309T200000
DTSTAMP:20260512T054312
CREATED:20220310T041157Z
LAST-MODIFIED:20220310T042705Z
UID:11938-1646852400-1646856000@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the landing page.\nWe add the TowerForPurchase sprite and created a floating TowerForPurchase when the target collides with the non floating TowerForPurchase.\n\nHomework: \n\nCreate a new sprite class called “TowerHotspot”\, and then position them at these locations:\n\nWhen the floating tower collides with a tower hotspot sprite\, create a Tower at the hotspot location using similar logic we used to create the floating TowerForPurchase.\nWhen the Tower is created\, remove the floating tower from its sprite group.\n\n 
URL:https://www.ayclogic.com/event/7-pm-python-game-development-112/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220305T130000
DTEND;TZID=America/Los_Angeles:20220305T140000
DTSTAMP:20260512T054312
CREATED:20220305T220348Z
LAST-MODIFIED:20220305T220348Z
UID:11874-1646485200-1646488800@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the landing page.\nWe went over the game walk and started the maze solver module to user for the enemy tank.\nAdded logic to kill the enemy tank with the bullet.\n\nHomework: \n\nAdd the game won page when the enemy tank is killed.  You should be able to click the play button on the game won page. Don’t worry about reseting the state of the map and game\, we’ll handle that later. Make sure the game won page looks something like this:
URL:https://www.ayclogic.com/event/1-pm-python-game-development-51/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220302T190000
DTEND;TZID=America/Los_Angeles:20220302T200000
DTSTAMP:20260512T054312
CREATED:20220303T040650Z
LAST-MODIFIED:20220303T171352Z
UID:11835-1646247600-1646251200@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe added the bullet sprite.\nWe added direction to the bullet and spawned them in 4 different directions\nWe added the enemy health.\n\nHomework: \n\nAdd the landing page with a play button:\nWhen you click the play button show the game in session page instead.\nAdd collision detection between the bullet and the enemy which destroy both sprites.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-111/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220226T130000
DTEND;TZID=America/Los_Angeles:20220226T140000
DTSTAMP:20260512T054312
CREATED:20220226T220248Z
LAST-MODIFIED:20220226T220359Z
UID:11764-1645880400-1645884000@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to center the bullet’s initial creation position\, and added collision detection between the enemy tank and the bricks.\nWe added logic so the enemy tank faces the enemy turret in the direction of the player tank.\n\nHomework: \n\nAdd some game modes: GAME_LANDING_PAGE and GAME_IN_SESSION.  Define a new attribute self.mode inside tank game originally set to GAME_LANDING_PAGE. Define a new method called handle_landing_page\, that shows the landing page like below:\n\nWhen you click the Play button switch the mode to GAME_IN_SESSION and show all the logic that we added previously with the two tanks etc.  You can follow previous examples we for handling the landing page in Birdie etc.\nBonus: Add collision detection between the player tank and the enemy tank and switch to GAME_LANDING_PAGE when the enemy tank gets destroyed.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-50/
CATEGORIES:Advanced Python Game Development,Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220219T130000
DTEND;TZID=America/Los_Angeles:20220219T140000
DTSTAMP:20260512T054312
CREATED:20220219T220019Z
LAST-MODIFIED:20220219T220027Z
UID:11660-1645275600-1645279200@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over how to add the iron walls.\nWe reviewed how we pointed the bullet in the correct direction.\nWe moved the bullet in the direction the turret is facing.\n\nHomework: \n\nSpawn the bullet so that first appears in the center of the tank.\nAdd logic so the enemy tank can’t move through both normal and iron bricks.  You can use the same technique we used for the player tank.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-49/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220216T190000
DTEND;TZID=America/Los_Angeles:20220216T200000
DTSTAMP:20260512T054312
CREATED:20220217T040335Z
LAST-MODIFIED:20220217T040335Z
UID:11625-1645038000-1645041600@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the target.\nWe added directions and kept track of the current region and expected directions\, so the enemy could walk down the path.\n\nHomework: \n\nFinish the logic so the enemy walks down the path through region “5a” or “5b”.\nAdd animation to to the enemy.  First load up an attribute called “self.images” which contains all the animation frames from “2_enemies_1_WALK_000.png” to “2_enemies_1_WALK_009.png”.  Then add animation by add a get_next_image method which returns the next image after a 5 frame delay.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-108/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220212T130000
DTEND;TZID=America/Los_Angeles:20220212T140000
DTSTAMP:20260512T054312
CREATED:20220212T224156Z
LAST-MODIFIED:20220212T224731Z
UID:11560-1644670800-1644674400@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to rotate the shield.\nWe added animation to the exploding brick.\nWe oriented the bullet so it’s facing the correct direction using the angle passed by the turret.\n\nHomework: \n\nModify the Brick sprite constructor to add an additional parameter type that has value either WALL_FLAG or BORDER_WALL_FLAG.  When WALL_FLAG is passed in the constructor\, use the current logic to load the red brick image\, but when BORDER_WALL_FLAG is passed load a  different image\, “IronWall.png”.  You can find this image here: Or at gitlab here.\nModify the create_map method so that when the cell_type is a BORDER_WALL_FLAG\, then create a Brick is passed with the type parameter BORDER_WALL_FLAG\, but when it’s wall type  is WALL_FLAG\, then the Brick is created with the type parameter WALL_FLAG.  Add the bricks created with the border wall flag to a separate sprite group so that they can’t be destroyed by the bullets.\nModify the MAP variable in config.py so that the top side\, bottom side\, and left and right sides of the map have the BORDER_WALL_FLAG value. Make sure that these get created on the screen using the create_map method:\nBonus: move the bullet in the correct direction based on the direction parameter that gets passed in from the turret.  Also center the bullet so that when it’s created\, the center of the bullet is equal to the center of the turret.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-48/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220209T190000
DTEND;TZID=America/Los_Angeles:20220209T200000
DTSTAMP:20260512T054312
CREATED:20220210T040525Z
LAST-MODIFIED:20220210T040525Z
UID:11530-1644433200-1644436800@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to setup tower of defense.\nWe created the enemy sprite and moved it accross the screen.\nWe went over the technique to move the enemy along the path.\n\nHomework: \n\nCreate a new sprite called “TargetPointer” which uses the “target.png” image.  Move this sprite wherever the mouse moves\, and make sure to associate a hitbox “rect” attribute with it.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-107/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220205T130000
DTEND;TZID=America/Los_Angeles:20220205T140000
DTSTAMP:20260512T054312
CREATED:20220205T220045Z
LAST-MODIFIED:20220205T220045Z
UID:11471-1644066000-1644069600@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the shield on top of the tank.\nWe corrected the rotation of the turret.\n\nHomework: \n\nAdd a new attribute “self.degrees_rotated” to the shield\, and every update method/frame increase the degrees rotated by one.\nRotate the original image by the “self.degrees_rotated” value\, and draw this image on the screen.\nCenter the rotated shield on the center of the tank by positioning it with respect to the center of the shields target location using the same method we used to rotated the turret correctly.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-47/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220202T190000
DTEND;TZID=America/Los_Angeles:20220202T200000
DTSTAMP:20260512T054312
CREATED:20220203T042617Z
LAST-MODIFIED:20220203T042617Z
UID:11443-1643828400-1643832000@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the tank explosion sprite.\nWe delayed the shield power-up creation\, and created it on random empty squares.\n\nHomework: \n\nClone Tower of Defense and checkout the “skeleton” branch.  Then create a new branch using your name from this branch.  Then setup the project so that you can load the game background.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-106/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220129T130000
DTEND;TZID=America/Los_Angeles:20220129T140000
DTSTAMP:20260512T054312
CREATED:20220129T225202Z
LAST-MODIFIED:20220129T225202Z
UID:11374-1643461200-1643464800@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the shield powerup.\nWe fixed the turret to point directly at the mouse by referencing the center of the turret.\nWe went over the technique to rotate the turret correctly bytes  referencing the center of the turret.\n\nHomework: \n\nCreate a new sprite class “Shield” using the “Get_Shield_Player_1.png” image.\nAdd a method handle_tank_shield_powerup_collision.  When the player tank collides with the shield powerup\, make the shield appear on the screen.\nWhen it appears\, make the shield appear the same location as the player tank.  Keep the location of the shield synced with the location of the player tank.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-46/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220122T130000
DTEND;TZID=America/Los_Angeles:20220122T140000
DTSTAMP:20260512T054312
CREATED:20220123T001017Z
LAST-MODIFIED:20220123T001017Z
UID:11254-1642856400-1642860000@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add the enemy tank and enemy turret\nWe refactored the enemy tank and enemy turret to avoid code duplication\, using inheritance.\n\nHomework: \n\nAdd a sprite class for the shield power up called ShieldPowerup.\nPlace the shield power up somewhere on the screen.\nDetect collision between the play tank and the shield powerup.  The shield power should disappear from the screen.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-45/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220119T190000
DTEND;TZID=America/Los_Angeles:20220119T200000
DTSTAMP:20260512T054312
CREATED:20220120T040310Z
LAST-MODIFIED:20220120T040310Z
UID:11201-1642618800-1642622400@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today \n\nWent over the homework to fire the enemy bullet in the correct direction.\nWe added logic so the player tank won’t move or animate unless the user presses the move keys.\nWe added logic so the shield protects the player tank.\n\nHomework \n\nWhen the player is destroyed by an enemy bullet\, switch the game mode to game over. Add a new page to show the game over screen:\n\nAdd sound effects for when the enemy tank or player tanks are destroyed by the bullet using the “explodify.wav” sound effect.
URL:https://www.ayclogic.com/event/7-pm-python-game-development-104/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220115T130000
DTEND;TZID=America/Los_Angeles:20220115T140000
DTSTAMP:20260512T054312
CREATED:20220115T220255Z
LAST-MODIFIED:20220115T220333Z
UID:11110-1642251600-1642255200@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today \n\nWe went over the homework.\nWe reviewed some trigonometry\nWe rotated the turret so it faces the direction of the mouse.\n\nHomework \n\nAdd a sprite class for the enemy tank using the image in Enemy_Tanks.  Create a separate class for this.\nBonus: Add a turret for the enemy tank using the folder in files in the same folder.\nIt should look something like this
URL:https://www.ayclogic.com/event/1-pm-python-game-development-44/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220108T130000
DTEND;TZID=America/Los_Angeles:20220108T140000
DTSTAMP:20260512T054312
CREATED:20220108T215859Z
LAST-MODIFIED:20220108T215859Z
UID:11002-1641646800-1641650400@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework\nAdd collision detection between the tank and the bricks.\nwe moved the tank back when it collided with the bricks.\n\nHomework: \n\nAdd collision detection between the bullet and the bricks.  When the bullet collides with the brick\, remove both from the screen.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-43/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20220105T190000
DTEND;TZID=America/Los_Angeles:20220105T200000
DTSTAMP:20260512T054312
CREATED:20220106T042323Z
LAST-MODIFIED:20220106T042323Z
UID:10965-1641409200-1641412800@www.ayclogic.com
SUMMARY:7 PM - Python Game Development
DESCRIPTION:Today: \n\nWe went over the homework to add sound effects\nWe reviewed the code for the maze solver.\nWe added logic to move the enemy tank based on the path.\nWe cleaned up the code to reduce duplicate code between the enemy and player tank classes.\n\nHomework: \n\nImplement collision detection between the bullet and the enemy tank.  Both the enemy tank and bullet should be destroyed.\nBonus: add the game won page when the enemy tank is destroyed. Draw “assets/Texts/Text_You_Won.png”above the play button:
URL:https://www.ayclogic.com/event/7-pm-python-game-development-102/
CATEGORIES:Advanced Python Game Development
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20211218T130000
DTEND;TZID=America/Los_Angeles:20211218T140000
DTSTAMP:20260512T054312
CREATED:20211218T220120Z
LAST-MODIFIED:20211218T221050Z
UID:10820-1639832400-1639836000@www.ayclogic.com
SUMMARY:1 PM - Python Game Development
DESCRIPTION:Today \n\nWe went over the homework to add the turret sprite.\nWe created a MAP config inside the config.py file.\nWe made the MAP have the correct size\, 28 columns and 20 rows so it can “cover” the entire screen.\nAs always\, you can check out the code on my branch here.\n\nHomework \n\nCustomize your map to make it interesting.  You could create a maze pattern or whatever you want.\nAdd a Bullet sprite using the “Bullet.png” filename. Get a bullet to appear on the screen by creating a Bullet sprite.  The bullet should move to the right\, you can reference what we did in the Birdie game\, it’s similar to the fireball.\nWhen use presses the mouse button\, shoot a bullet by creating a new bullet and adding it to the bullet group.\nMake the bullet get created from the position of the tank.
URL:https://www.ayclogic.com/event/1-pm-python-game-development-42/
CATEGORIES:Advanced Python Game Development
END:VEVENT
END:VCALENDAR