I have seen games using hex boards but none using systems to refer to specific hexes (like you can do in Chess with numbers and letters). Is there a standard way to refer to a specific hex without numbering each hex on the board? A bit like a system of coordinates but that would be fairly clear and user-friendly?
There is no standard way, but as it's a two-dimensional grid you can easily project a coordinate system on it.
You can either go in a 90° angle then every second row or column is offset for one half to the bottom or right.
Or you can go in a 60°/120° angle to have straight lines but that looks unusual (and depending on your starting point can easily go into the negatives).
This example is from the game Lyngk
Here a system is being used to name intersections of triangles where the top line is just A1, then then next line is B1-B4. You can see on the side of the board how this is done. I know the question is for hexagons but this method could easily be applied in the same way.
ie. if you use Settlers or Catan the top row of land would be A1-A3, the next row down B1-B5 etc.
This site has a pretty thorough discussion of hexagons, most importantly for your question the section on "Coordinate systems". There are a few ways you can set it all up, but certainly you can do some row and column numbering to identify the hexes but at least one of those will be a bit "wobbly". Or you can choose a different coordinate system that counts things on an angle, but then your numbers are what get wobbly.
Visually, you could mark the wobbly direction with bands of colour to make it clearer which hexes are in the same column (or row).
Building on ConMan's answer and link, I think a combo of axial coordinates and the offset system would have a lot of advantages. Here's how the system works:
1) Every row has a letter, A, B, C, etc, just as in Lyngk illustration above. 2) Starting with the leftmost, topmost hex, assign it "column" 1. So, for example, in the Lyngk illustration above, the leftmost hex on row C would be C1. 3) A given row has only even or odd numbers on it, so the next hex to the right of C1 is C3, not C2. 4) The hex up and to the right of C3 is B4...so there's no B1, B2, or B3, and the single spot on row A is A7. 5) The hex to bottom right of C1 is D2... there is no D1, since D is an evens row. 6) The spot to right of B4 is B6, since there is no B5, because B row is also evens row.
Get it? The advantage is both that this is intuitive (once you get over the lack of evens or odds in a given row), but the math is always easy...up and to the right is minus one letter, plus one number, no matter the row you're in, and all the other moves between hexes are likewise stable (unlike the offset system cited in that link) but there are rows with letters, which is easier to follow intuitively (unlike the axial system cited in the link).
The advantage of having easy coordinate math isn't obvious for casual games, but I think for programming purposes it's a lot more attractive to have simple rules for hex relationships.
I think that, to make the coordinate system easy to understand, all the hexes which have the same value for a coordinate should be in a straight line. If coordinate lines wobble, the players, and people trying to understand each other's notation, would never remember which way the wobbling is to go.
My preferred system is something like the diagram below. If each player has an edge of the board nearest them, let the hexes with "1" coordinates be nearest the player who plays first. If each player has a corner of the board nearest them, let the hexes with "a" coordinates be on the left of the player who plays first. (Note that chess notation has already established the equivalent conventions for square boards.)
c5 d5 e5 b4 c4 d4 e4 a3 b3 c3 d3 e3 a2 b2 c2 d2 a1 b1 c1
Take your board. Choose one side and label each line touching it A, B,C,D.... Take another side adjacent to the first and label the lines a,b,c,d... Take the untouched set of lines, and label them 1,2,3,4... Now, you have a coordinate system in the format Ab4, or Hg5, or Dc3
However, there are risks, such as it is case sensitive.
Please tell me if it is not clear, and I will clarify tomorrow morning