Click here to Skip to main content
15,567,221 members
Home / Discussions / C#
   

C#

 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W24-Sep-22 3:45
Otto_W24-Sep-22 3:45 
GeneralRe: C# Battleship gameboard & random assignment Pin
OriginalGriff24-Sep-22 4:16
mvaOriginalGriff24-Sep-22 4:16 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W25-Sep-22 22:20
Otto_W25-Sep-22 22:20 
GeneralRe: C# Battleship gameboard & random assignment Pin
OriginalGriff25-Sep-22 23:01
mvaOriginalGriff25-Sep-22 23:01 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W29-Sep-22 17:23
Otto_W29-Sep-22 17:23 
GeneralRe: C# Battleship gameboard & random assignment Pin
OriginalGriff29-Sep-22 20:10
mvaOriginalGriff29-Sep-22 20:10 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W4-Oct-22 1:29
Otto_W4-Oct-22 1:29 
GeneralRe: C# Battleship gameboard & random assignment Pin
OriginalGriff4-Oct-22 2:09
mvaOriginalGriff4-Oct-22 2:09 
You don't need to construct a Point class / struct - it's already in .NET: Point Struct (System.Drawing) | Microsoft Learn[^]

And why would you need two arrays? Does it matter once the ship is in place? Or is a Ship a collection of Point values that need to be hit?

Simplest solution is to use an Orientation enum and pass a value of that to your PlaceShip method:
C#
private Random rand = new random();
...
Point loc = new Point (rand.Next(0, 10), rand.Next(0, 10));
Orientation orient = Enum.GetValues(typeof (Orientation))
                         .OfType<Orientation>()
                         .ElementAt(rand.Next(0, ));
Ship s = PlaceShip (new BattleShip, loc, orient);
The code for a random enum value may be unfamiliar to you: it uses generics (which you may not have met yet) and Linq methods (which you may not have met either) to do the work:
Gets an array of all possible values of the enum
Cast the array to a more useful type - a collection of Orientation values.
Select a random element.
I could have written it like this:
C#
orient = (Orientation)rand.Next(0, 4);
Which gives the same result - but it assumes that the orientation values are sequential: if you want to add diagonals later there are good reasons for making your enum values non-sequential:
C#
public enum Orientation
    {
    Up = 1, 
    Down = 2, 
    Left = 4, 
    Right = 8,
    }
Because now you can combine values to form "Up and Right" without changing working code.
C#
orient = Orientation.Up | Orientation.Right;
Does that make sense?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!

GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W13-Oct-22 18:45
Otto_W13-Oct-22 18:45 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W13-Oct-22 18:46
Otto_W13-Oct-22 18:46 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W25-Oct-22 18:16
Otto_W25-Oct-22 18:16 
GeneralRe: C# Battleship gameboard & random assignment Pin
OriginalGriff25-Oct-22 20:34
mvaOriginalGriff25-Oct-22 20:34 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W30-Oct-22 20:30
Otto_W30-Oct-22 20:30 
GeneralRe: C# Battleship gameboard & random assignment Pin
Otto_W15-Nov-22 15:46
Otto_W15-Nov-22 15:46 
AnswerRe: C# Battleship gameboard & random assignment Pin
Gerry Schmitz6-Sep-22 6:06
mveGerry Schmitz6-Sep-22 6:06 
QuestionChanging Windows registry with C# Pin
Ismael_199931-Aug-22 13:50
Ismael_199931-Aug-22 13:50 
AnswerRe: Changing Windows registry with C# Pin
Dave Kreskowiak31-Aug-22 15:37
mveDave Kreskowiak31-Aug-22 15:37 
GeneralRe: Changing Windows registry with C# Pin
Ismael_19993-Sep-22 5:18
Ismael_19993-Sep-22 5:18 
GeneralRe: Changing Windows registry with C# Pin
Dave Kreskowiak3-Sep-22 10:51
mveDave Kreskowiak3-Sep-22 10:51 
AnswerRe: Changing Windows registry with C# Pin
OriginalGriff31-Aug-22 19:51
mvaOriginalGriff31-Aug-22 19:51 
GeneralRe: Changing Windows registry with C# Pin
Ismael_19993-Sep-22 5:20
Ismael_19993-Sep-22 5:20 
GeneralRe: Changing Windows registry with C# Pin
OriginalGriff3-Sep-22 5:43
mvaOriginalGriff3-Sep-22 5:43 
GeneralRe: Changing Windows registry with C# Pin
Ismael_19994-Sep-22 12:41
Ismael_19994-Sep-22 12:41 
GeneralRe: Changing Windows registry with C# Pin
Dave Kreskowiak4-Sep-22 14:12
mveDave Kreskowiak4-Sep-22 14:12 
GeneralRe: Changing Windows registry with C# Pin
OriginalGriff4-Sep-22 20:19
mvaOriginalGriff4-Sep-22 20:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.