Wing Craft

"The Lesser of Two Evils", well, two choice, I prefer cricket (high damage low speed) to locust (high speed low damage), also I prefer beam weapon (high weapon damage low moving speed) to wide weapon (high moving speed low weapon damage), and you? ^v^

ESC for Quit

{ 1P: 5 for coin, 1 for start, WSAD for directions, JK for button A B,

  2P: 6 for coin, 2 for start, arrow key for directions, num 1,2 for button A B}

And also in title page, press Tab key to set you own buttons

Hope you enjoy it, any comment and suggestions are welcomed! ^ v ^


Threw My Controller
Presented by assertivist

Classic arcade throwback
Presented by Unicorn Markets

Celest beauty
Presented by Buffalo974

Give this entry an award


Ratings (show detail)

Overall: 3.8
Fun: 3.8
Production: 4.4
Innovation: 3.1

Respondents: 12


File Uploader Date
xmzhang1 2017/02/25 09:13
ver 0.1
xmzhang1 2017/02/24 14:42
xmzhang1 2017/02/24 09:10
xmzhang1 2017/02/21 00:15

Diary Entries

7days left

OK, personally, all the theme is fine to me (well,what does it mean about 'The Lesser of Two Evils' ^v^). I will do a shooting game (shoot em up) this time.

Add a comment

Day 0

Ok, "The Lesser of Two Evils", I get the exactly meaning severals hours ago. Many thanks to my friend! Chanllenge starts, some tips to myself. 1) Do not pay much attention on images, sound, font, etc, I am not making commercial games, game idea is the most important things. 2)Do not try to put all my ideas into my game, it is only one week, I just show the most interesting thing. 3) Time is limited, first thing is try to finish my game without bugs.

Add a comment

Day 1

To be honest,  my first choice is 'Obsoloetely Fabulous', I made an old fashioned game framework last week (or it should be last month), and bad luck, the theme is "The Lesser of Two Evils", I saw that Futurama episode, so I just made my game a two-player game. I creat enemy attack method, enemy will attack the nearest player if it is an two-player game. In fact, I do not know the exact meaning at that time. I am not good at English. Anyhow, I get the meaning finally, and I made the player have two choice in the game. So if only one player plays, both of his choice may be aweful, but as the theme ordered, "The Lesser of Two Evils". I think he should choose the first one to play.

For the game itself, I meet a problem, I do not use the tmx map this time, how to creat the enemies in the map is a problem to me. I try to let the enemy appear by game frame, I make a enemyspawn dict, the key is frame, the value is enemy, I use dict.get() to creat the enemy. Well, bad luck, all the enemy instances will be created when the dict is created, so it would drop the game framerate. So I have to use another method, Hope I have a good day today.


Day 2

well, every thing goes well, now it is boss 1, graphics OK. I am not good at designing stages. I intend to creat 5 stages, for stage 1, eveyone can pass, even with bombs. For stage 2 and afters, the enemy number will increased, and player need some patience and skill. The next days, I will focus on boss design. They should have several attack mode according to their health. For innovations, I will give boss some skill, say the boss would give poison to the player, let the player weapon level down, let the boss health increase. All in all, my game is a shoot them up genre (well, how to pronounce this word ), Traditionally, the bullet should go straight, because delta_move = speed * direction, well, I will break it this time on pyweek 23. but I really do not know it is OK or not. Just try it. OK, go on designing my bosses.


Day 3

Thank Buffalo974 giving me an award, I do not know whether due to showing off my graphics, and now my code come errors. I use a lot of hassattr() to do the bool judge in my state machine, It would be OK if just run it only once, but I keep each state during the game running, so when next time flip the state, all the variables still works. It is an annoy thing for me, I tried to use del to delete them and finally I rewrite them. And also in my game, if the player press button B, there will be bomb effect, all the enemy bullet would turn into coins, then fly to the player. Normally, all bullet turns into coin, so there is no bullet, the player won't die, but it is not, I thought maybe the collision detection is before my bomb effect, so the player dies, and I just add a invincible state to player when bomb, just remove the player's hit box. well, The bug still happens, maybe 1/100 chance, the player dies, all the bullet coin fly to the player dead place. It is quite wired, I added a lot of print in my code, and nothing wrong. OK, I think I should just keep it for it is not always happen :) I will go on doing my bosses, I just finish boss 1, there is still 2,3,4,5 waiting for me. Time is limited. Come on!

Add a comment

Day 4 & 5

Ok, I am busy doing my work these days (I mean my job, I have to live rely on it)

Anyhow, I am struggling about try to finish my 5-stage game in plan, I have to stay up these days. Or I just finish 3-stage game, polish my code, fully tested it and try to modified all the errors and bugs. For myself, I still want to finish the 5-stage game according to my schedule, because I want to do some challange, and also I know, if I just finish 3 stages, the stage would  be 3 stages forever...

And I think 5-stage is fine, I can generate the stage enemies randomly by computer, I just creat the boss class. In fact, boss class is fine, bosses are seperate classes, if one class can not solve the problem, use two classes. But I meet problem on bullet class :) there are many conditions on bullet, I use pygame.sprite.Sprite, Bullet, EnemyBullet classes to manage my enemy bullets. It is really a mess, and with  a lot of copy and paste, I do not think I am OOP. Anyhow, first let my code work, then clean it :)

I want to post my code tomorrow, for one thing, I am not sure I have time to test my game, maybe other people run it can tell me the error, then I have one day to fix it, for another, If I know tomorrow is the deadline, I will go straight to the theme, though I still want to make a clear how the Rect.colliderect in pygame works, is it use quadtree? is it fast than boundary comparison?

Add a comment

Day 6

I really tired out and want to sleep, I have to say that those days when I stay up editing my papers is gone forever. Maybe I should say those days when I stay up playing DOTA is long gone :)

OK, I have finished my game with 5 stages, my_game Generally, I think it is fine. I would not make many changes during the last day, just find errors and try to package my game into .exe file. I tried pyinstaller but never success, I searched on web and someone said because of the graphics path is not correct, but I still do not know how to do it. Could you help me?  ;)

I would be very glad if you try to play my_game and tell me you feelings, any guidance and cristism is welcomed.

Good night!


Day 7

This is the last day of pyweek 23 (12 hours left ^v^), though I know I have extra one day to upload my game, but I want to use tomorrow to sleep ^v^ I upload the pyweek23 zip as my final work. Compared to former work, I change the weapon level from 1 to 4, bomb num from 3 to 4. Enemy number decreased half. To be honest, my initial thought is to design a bullet hell game, but I think that is not a popular genre. So I changed it several hours ago. But I did not change the boss, so, use bomb when face boss, however, if you want two player mode or single hard mode, you can try the former file or download from GitHub.

About my game, when first run it, there would be a game loading before start, so the black screen at first is normal. It would last several seconds, I think that is because a lot of  class.__init__ runs, I do not know how to solve it, or add a loading screen to give a hint. And if you know how to solve it, please tell me :)  For the game, I prefer to choose 'cricket' in game according 'The Lesser of Two Evils', its damage is bigger but speed is slower. For enemies, high speed is easy to attact bullets and make them wide spread, but for boss, you need laser beam to quickly defeat it. And yes, as I said. Bomb is a good thing,it can save life and make a massive damage. Remember to use it.

Good night!

1 comment

Day 21

Time to say goodbye, see you all in pyweek24 :)

I want to thank all your suggestions and feedbacks, especially who report the bug in boss 3. I really do not realized it until you said that. And also I really like all the entries, for some entry, I just feel my IQ is not enough to play it. :) And some entry, I do not know how to get it work, I remebered Gato's game using SDL2, I really want to see it, but I did not get it work. And also some entry,like Gumm, show a very good example how to using logging module, I will carefully check it in the future. I have some sugggestions, for one thing, maybe we should add some tags to all the project, like Python 2, pygame, pyglet, etc, or the game genre, STG, ACT, PUZ, etc. For another, how about we can upload vedios here, to introduce our game, how to play it, how to install it. I know there is youtube, but just for me, I have to use VPN to access youtube.

All in all, game is over, life is still on.

Add a comment