[Event "?"] [Site "?"] [Date "?"] [Round "?"] [White "?"] [Black "?"] [Result "?"] [fen ""] 1. e3 e5 2. Qg4 Qf6 3. Bb5 e4 4. Qxe4+ Qe7 5. Qd5 Qh4 6. g3 c6 7. Qf5 g6 8. Qd5 Qb4 9. Qe5+ Ne7 10. Be2 Rg8 11. b3 d6 12. Qf6 Nd5 13. a3 Qe4 14. f3 Qxc2 15. Qd4 Qxc1+ 16. Kf2 Bg7 17. Qe4+ Kf8 18. Ra2 Be5 19. f4 Bf5 20. Nh3 Qc5 21. b4 Bxe4 22. bxc5 Bxh1 23. Ng5 f6 24. Nxh7+ Kg7 25. fxe5 Kxh7 26. exd6 Nd7 27. Rc2 Be4 28. Rc1 g5 29. Nc3 Nxc3 30. Rxc3 a5 31. Bc4 Bd5 32. e4 Bxc4 33. Rxc4 Rge8 34. g4 Re5 35. Rc1 Rxe4 36. Kf3 Rd4 37. Kf2 Rxd2+ 38. Ke3 Rxh2 39. Rc4 Kg7 40. Rc1 Rh3+ 41. Kd2 Rxa3 42. Ke2 Rh8 43. Kf2 Rd3 44. Rh1 Rd2+ 45. Ke1 Rxh1+ 46. Kxd2 Nxc5 47. Ke2 Ne4 48. d7 Nc5 49. d8=Q Rh2+ 50. Ke3 a4 51. Qc7+ Kf8 52. Qxh2 Ne6 53. Qc2 a3 54. Qf5 Nf4 55. Qc2 Kg7 56. Qc4 Ng2+ 57. Kf3 Ne1+ 58. Ke2 Ng2 59. Qc5 Nf4+ 60. Ke1 Nd3+ 61. Kd2 Nxc5 62. Kc3 a2 63. Kb2 a1=B+ 64. Kxa1 Nd3 65. Ka2 Nf4 66. Kb2 c5 67. Kc3 Kf7 68. Kc4 b6 69. Kb5 Nd5 70. Kc6 Ke6 71. Kb5 Kd7 72. Kc4 Ne3+ 73. Kb5 Kc7 74. Ka6 Nxg4 75. Kb5 Ne3 76. Ka4 Kd7 77. Kb5 Nd5 78. Kc4 Nf4 79. Kb5 g4 80. Kxb6 c4 81. Kb5 c3 82. Kc4 c2 83. Kb3 c1=Q 84. Kb4 Qc2 85. Ka3 g3 86. Kb4 Qe4+ 87. Ka3 Kc7 88. Kb2 Qd5 89. Ka3 g2 90. Kb4 g1=Q 91. Kc3 Qb1
Nice efforts, you've made a working chess engine, your journey has started. But you have more works to do:
(respond to your comment) 3...e4 must be a bug because your engine just gave up a pawn for nothing in the next move. Searching for d=3 should be able to see it. Also see the next comment.
Your engine seems to like attacking the most valuable piece (queen), your 3...e4 may have been caused by this blindness. I'm guessing (you'll need to check it yourself) you put too much weight in attack threats.
The engine moves the queen out too early. You will need to check your PST table and make sure your PST evaluation beats the temptation of moving the queen out. A common mistake in early chess engines is that they put too much weight into the number of squares that the queen can control in the opening.
Please check your PST again why your engine would prefer moving 1.e3. You must instruct the engine to move into the centre.
Don't use the default position for testing. It's still too early for your engine to handle it. Set yourself some simple positions where there is a direct way to win, for example: back-rank mate in two, pushing the pawn for promotion etc. Your engine blunders too much, even at depth 3 and no understanding of tactical threats. Make sure you can play those easy positions.
I'm guessing you set yourself at d=3 because it's too slow for you to go further. Consider to implement the easy extensions, such as null move and hashing. In particular, your engine won't go anywhere without hashing.