[C#] Hjälp mig med mitt spel!
Tjenis penis!
Börjat experimentera med XNA, och med WP apps o gud vet vad, men jag behöver hjälp med mitt spel lite.
EDIT:
Jag har gjort om allting totalt!
Projekt Chinese Blood: Shotgun Vengeance!
Du styr din shotgun och ska skjuta ner så många kineser som möjligt innan ammunitionen tar slut! Lite som de där flash spelen då man skjuter ankor, fast med kineser istället. (Man är en Japansk soldat från Andravärldskriget som skjuter ner kineser)
Källkod:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Media;
namespace TEST
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
private Texture2D _textureOverlay;
private Texture2D _sonic;
private Vector2 _sonicPosition;
private Vector2[] kineserpos = new Vector2[4];
private Texture2D[] kineser = new Texture2D[4];
private SoundEffect Shotgun;
KeyboardState OldKeyState;
GamePadState OldGamePadState;
public SpriteFont font;
public SpriteFont font2;
public int Score = 0;
public int Ammo = 25;
private Texture2D _MainMenu;
bool meny = true;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 1600;
graphics.PreferredBackBufferHeight = 900;
graphics.IsFullScreen = false;
Window.Title = "Chinese Blood: Shotgun Vengeance";
_sonicPosition = new Vector2(400, 500);
Content.RootDirectory = "Content";
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
Random random = new Random();
font = Content.Load<SpriteFont>("Score");
font2 = Content.Load<SpriteFont>("ENTER");
for (int i = 0; i < kineser.Length; i++)
{
int x = random.Next(300, 1450);
kineser[i] = Content.Load<Texture2D>("CHINESE" + (i + 1));
kineserpos[i] = new Vector2(x, 400);
}
_sonic = Content.Load<Texture2D>("shotgun");
_textureOverlay = Content.Load<Texture2D>("lice");
Shotgun = Content.Load<SoundEffect>("ShotgunSound2");
_MainMenu = Content.Load<Texture2D>("MainMenu");
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
_sonic.Dispose();
_textureOverlay.Dispose();
for (int i = 0; i < kineser.Length; i++)
{
kineser[i].Dispose();
}
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
KeyboardState KeyState = Keyboard.GetState();
GamePadState gamepadState = GamePad.GetState(PlayerIndex.One);
if (meny == true)
{
if (KeyState.IsKeyDown(Keys.Enter)&& OldKeyState.IsKeyUp(Keys.Enter))
{
Shotgun.Play(); meny = false;
}
}
if (meny == false)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (gamepadState.IsButtonDown(Buttons.LeftThumbstickLeft))
_sonicPosition = new Vector2(_sonicPosition.X - 10, _sonicPosition.Y);
if (gamepadState.IsButtonDown(Buttons.LeftThumbstickRight))
_sonicPosition = new Vector2(_sonicPosition.X + 10, _sonicPosition.Y);
if (gamepadState.IsButtonDown(Buttons.A) && OldGamePadState.IsButtonUp(Buttons.A))
{
Shotgun.Play(); Ammo--;
}
if (KeyState.IsKeyDown(Keys.Left))
_sonicPosition = new Vector2(_sonicPosition.X - 10, _sonicPosition.Y);
if (KeyState.IsKeyDown(Keys.Right))
_sonicPosition = new Vector2(_sonicPosition.X + 10, _sonicPosition.Y);
if (KeyState.IsKeyDown(Keys.Space) && OldKeyState.IsKeyUp(Keys.Space))
{
Shotgun.Play(); Ammo--;
}
}
OldKeyState = KeyState;
OldGamePadState = gamepadState;
// TODO: Add your update logic here
base.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
if (meny == true)
{
spriteBatch.Draw(_MainMenu, new Vector2(0f, 0f), Color.White);
spriteBatch.DrawString(font2, "Press Enter", new Vector2(400, 450), Color.Red);
}
if (meny == false)
{
for (int i = 0; i < kineser.Length; i++)
{
spriteBatch.Draw(kineser[i], new Rectangle((int)kineserpos[i].X, (int)kineserpos[i].Y, 150, 150), Color.White);
}
spriteBatch.Draw(_textureOverlay, new Vector2(0f, 0f), Color.White);
spriteBatch.Draw(_sonic, _sonicPosition, Color.White);
spriteBatch.DrawString(font, "Score: " + Score, new Vector2(0, 0), Color.Black);
spriteBatch.DrawString(font, "Ammo: " + Ammo, new Vector2(0, 50), Color.Black);
spriteBatch.DrawString(font, "Pre-Alpha", new Vector2(1300, 0), Color.Black);
spriteBatch.DrawString(font, "Version 0.1.0.0", new Vector2(1250, 830), Color.Black);
// TODO: Add your drawing code here
}
spriteBatch.End();
base.Draw(gameTime);
}
}
}
Ska göras:
Poängsystem - Görs just nu. - Väntar på att kollisionssystemet är klart.
Ammunitions system - Görs just nu. - Fungerar ej. Läs längre ner.
Tidsbegränsning. Spelaren skall bara ha en viss tid på sig att skjuta så många som möjligt.
Huvudmeny (Görs allra sist) Försöker just nu, men fattar nada. Hjälp mig! Här försöker jag lära mig :S
Highscore (Görs allra sist)
Kollisions system (Kineserna dör och försvinner när du träffar dom. OBS! Poängsystemet skall inkluderas här.)
Kulor, hagel eller liknande som flyger ut ur pipan? (Overkill?) Försökt, men fattar nada, även lite overkill, kommer kanske fixas, och i så fall sist.
Rök runt pipan när man skjuter? (Overkill?)
Några sorts gränser så att man inte kan åka utanför skärmen med hagelbössan! Prioriterat
Något sorts system så att det spawnar en kines åt taget eller ett par då och då, istället för att de ploppar upp samtidigt.
Problem just nu:
Kineserna dyker inte upp!
protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); if (meny == true) { spriteBatch.Draw(_MainMenu, new Vector2(0f, 0f), Color.White); spriteBatch.DrawString(font2, "Press Enter", new Vector2(400, 450), Color.Red); } if (meny == false) { for (int i = 0; i < kineser.Length; i++) { spriteBatch.Draw(kineser[i], new Rectangle((int)kineserpos[i].X, (int)kineserpos[i].Y, 150, 150), Color.White); } spriteBatch.Draw(_textureOverlay, new Vector2(0f, 0f), Color.White); spriteBatch.Draw(_sonic, _sonicPosition, Color.White); spriteBatch.DrawString(font, "Score: " + Score, new Vector2(0, 0), Color.Black); spriteBatch.DrawString(font, "Ammo: " + Ammo, new Vector2(0, 50), Color.Black); spriteBatch.DrawString(font, "Pre-Alpha", new Vector2(1300, 0), Color.Black); spriteBatch.DrawString(font, "Version 0.1.0.0", new Vector2(1250, 830), Color.Black); // TODO: Add your drawing code here } spriteBatch.End(); base.Draw(gameTime); } } }
Pre-Alpha Footage (Vet, overkill för ett så litet projekt, men det är ju bara för sakens skull..)
Update 13/10 Version 0.1.0.0:
Längst upp till vänster har vi ammunition och poäng, fungerar inte än.
Och på resten av skärmen så står det lite version siffror och annat trams.
Man styr alltså armen med hagelbrakaren till vänster och höger, och skjuter med mellanslag. Då låter det såhär: KABOM! Och ammunitionen skall minska med ett.
Ifall man lyckas träffa en kines, så ska poängen öka med 50 och ett meddelande som säger "Kill 50+" eller något liknande och/eller ett ljud plingar till.
Just nu så spawnar alla med en random position åt sidorna men samma höjd position. Senare så skall bara ett par stycken dyka upp i taget och dyka upp och man ska försöka skjuta kinesen innan hen försvinner.
Lämna gärna tankar, feedback och alla former utav hjälp som dyker upp i era huvuden