I want to create the game Battleships (but with planes) in SQL. It is kind of based on this guy's idea: SQL Battleship I already have some tables:
CREATE TABLE [dbo].[Game](
[Round_Num] [int] IDENTITY(1,1) PRIMARY KEY,
[Player_ID] [varchar](10) NULL,
[Grid_Pick] [varchar](2) NULL,
[Outcome] [varchar](6) NULL,
[Plane_Hit] [varchar](10) NULL,
[Helicopter] [varchar](6) NULL DEFAULT ('_'),
[Jet] [varchar](6) NULL DEFAULT ('__'),
[Airbus] [varchar](6) NULL DEFAULT ('___'),
[Rocket] [varchar](6) NULL DEFAULT ('____'),
[Shots_Fired] [int] NULL,
[Shots_Hit] [int] NULL,
[Hit_Pct] [float] NULL,
[Ships_Sunk] [int] NULL,
);
CREATE TABLE [dbo].[Grid_A](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[A] [varchar](1) NULL,
[B] [varchar](1) NULL,
[C] [varchar](1) NULL,
[D] [varchar](1) NULL,
[E] [varchar](1) NULL,
[F] [varchar](1) NULL,
[G] [varchar](1) NULL,
[H] [varchar](1) NULL,
);
And a table Grid_B
looking exactly like Grid_A
.
Now I try to fill the Grids (or do I need to alter these?) with my Planes. I have an 8x8 grid so I want to have 4 "Planes":
- Helicopter (1x1)
- Jet (2x1)
- Airbus (3x1)
- Rocket (4x1)
How can I get these randomly into the grids?
I tried with this trigger but it didn't work:
CREATE TRIGGER INSERTPLANESB
ON Game AFTER INSERT AS
DECLARE @Rand CHAR;
DECLARE @Random INT;
DECLARE @Upper INT;
DECLARE @Lower INT;
BEGIN
SET @Lower = 1
SET @Upper = 8
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random
SELECT @Rand = CAST(@Random AS CHAR)
SELECT @Rand
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random
UPDATE Grid_B
SET @Rand = "H"
WHERE ID = @Random;
END
GO
I wanted to insert the first letter of each plane so I can see which plane is where. I tried with H for Helicopter.