网管联盟论坛 - 共享互助,专助进取

 找回密码
 立即注册

QQ登录

只需一步,快速开始

深蓝云维护 三层集中管理 手机远程深蓝软件微信公众号深蓝防逃费V6(多收费共存/全自动处理)
查看: 174|回复: 4

[原创] 炮击游戏

[复制链接]

163

主题

1922

帖子

2183

积分

出神入化(08级)

Rank: 8Rank: 8

发表于 2018-10-16 06:30:43 | 显示全部楼层 |阅读模式
  1. #include <GDIPlus.au3>
  2. #include <WindowsConstants.au3>
  3. #include <EditConstants.au3>
  4. Opt("PixelCoordMode", 2)

  5. Global $MainX = 800
  6. Global $MainY = 600
  7. Global $H1, $H2, $H3, $C_Angel, $C_Power, $Wind, $Rem = False
  8. _SetValues()

  9. _GDIPlus_Startup()

  10. $hGui = GUICreate("炮击游戏", $MainX, $MainY)
  11. GUISetBkColor(0x00FF00)
  12. GUIRegisterMsg($WM_PAINT, '_Redraw')
  13. $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
  14. GUICtrlCreateLabel("角度", 50, $MainY - 23, 50, 20)
  15. GUICtrlSetColor(-1, 0xFFFFFF)
  16. $hAngle = GUICtrlCreateInput("45", 10, $MainY - 25, 35, 20, $ES_READONLY)
  17. GUICtrlCreateUpdown(-1)
  18. GUICtrlSetLimit(-1, 80, 0)
  19. GUICtrlCreateLabel("火力", 165, $MainY - 23, 50, 20)
  20. GUICtrlSetColor(-1, 0xFFFFFF)
  21. $hPower = GUICtrlCreateInput("70", 120, $MainY - 25, 40, 20, $ES_READONLY)
  22. GUICtrlCreateUpdown(-1)
  23. GUICtrlSetLimit(-1, 120, 40)
  24. $hFire = GUICtrlCreateButton("射击", 230, $MainY - 25, 55, 20)
  25. $hNew = GUICtrlCreateButton("新建", 340, $MainY - 25, 55, 20)

  26. GUISetState()
  27. _CreateBK($H1, $H2, $H3)

  28. While 1
  29.         $msg = GUIGetMsg()
  30.         If $msg = -3 Then ExitLoop
  31.         If $msg = $hNew Then
  32.                 _SetValues()
  33.                 _CreateBK($H1, $H2, $H3)
  34.         EndIf
  35.         If $msg = $hFire Then _Fire($H1, $H2)

  36.         Sleep(5)
  37. WEnd

  38. _GDIPlus_Shutdown()

  39. Func _Fire($H1, $H2)
  40.         Local $pi = 3.14159265358979
  41.         Local $ymax = 0
  42.         Local $v = GUICtrlRead($hPower)
  43.         Local $alpha = GUICtrlRead($hAngle) * (-1)
  44.         Local $x_alt = 0, $y_alt = 0
  45.         Local $Treffer = False
  46.         Local $Gras = False
  47.         $hBrush_Del = _GDIPlus_BrushCreateSolid(0xFF0000FF)
  48.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF222222)
  49.         _ShotSound()
  50.         For $t = 0 To 35 Step 0.3
  51.                 $x = (Cos($pi / 180 * $alpha) * ($v - $Wind) * $t)
  52.                 $y = (Sin($pi / 180 * $alpha) * $v * $t) - (0.5 * -9.81 * $t * $t)
  53.                 PixelSearch(45 + $x, $MainY - $H1 - 60 + $y, 45 + $x + 25, $MainY - $H1 - 60 + $y + 25, 0x887766)
  54.                 If Not @error Then $Treffer = True
  55.                 If 45 + $x > $MainX Then ExitLoop
  56.                 If $MainY - $H1 - 60 + $y >= $MainY - 50 Then ExitLoop
  57.                 PixelSearch(45 + $x, $MainY - $H1 - 60 + $y, 45 + $x + 25, $MainY - $H1 - 60 + $y + 25, 0x00FF00)
  58.                 If Not @error Then $Gras = True
  59.                 _GDIPlus_GraphicsFillPie($hGraphic, 45 + $x_alt, $MainY - $H1 - 60 + $y_alt, 25, 25, 0, 360, $hBrush_Del)
  60.                 _GDIPlus_GraphicsFillPie($hGraphic, 45 + $x, $MainY - $H1 - 60 + $y, 25, 25, 0, 360, $hBrush)
  61.                 $x_alt = $x
  62.                 $y_alt = $y
  63.                 If $Treffer = True Then ExitLoop
  64.                 If $Gras = True Then ExitLoop
  65.                 Sleep(20)
  66.         Next
  67.         _GDIPlus_GraphicsFillPie($hGraphic, 45 + $x_alt, $MainY - $H1 - 60 + $y_alt, 25, 25, 0, 360, $hBrush_Del)
  68.         If $Treffer = True Then
  69.                 $hBrush = _GDIPlus_BrushCreateSolid(0xAA000000)
  70.                 _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 60, $MainY - $H2 - 60, 60, 80, 0, 360, $hBrush)
  71.                 _HitSound()
  72.                 MsgBox(0, "打中了", "太棒了,你打中了对方")
  73.         Else
  74.                 ;计算机开始
  75.                 Sleep(500)
  76.                 If $C_Power < 20 Then $C_Power = 20
  77.                 If $C_Power > 150 Then $C_Power = 150
  78.                 If $C_Angel < 0 Then $C_Angel = 0
  79.                 If $C_Angel > 80 Then $C_Angel = 80
  80.                 $v = $C_Power + $Wind
  81.                 $alpha = $C_Angel * (-1)
  82.                 $x_alt = 0
  83.                 $y_alt = 0
  84.                 $Gras = False
  85.                 $Treffer = False
  86.                 _ShotSound()
  87.                 For $t = 0 To 35 Step 0.3
  88.                         $x = (Cos($pi / 180 * $alpha) * ($v + $Wind) * $t)
  89.                         $y = (Sin($pi / 180 * $alpha) * $v * $t) - (0.5 * -9.81 * $t * $t)
  90.                         If ($y * (-1)) > $ymax Then $ymax = $y * (-1)
  91.                         PixelSearch($MainX - 75 - $x, $MainY - $H2 - 60 + $y, $MainX - 75 - $x + 25, $MainY - $H2 - 60 + $y + 25, 0x887766)
  92.                         If Not @error Then $Treffer = True
  93.                         If $MainX - 75 - $x < 0 Then
  94.                                 If ($y * (-1)) < $ymax Then
  95.                                         $C_Power -= Random(1, 10, 1)
  96.                                         If $Rem = True Then
  97.                                                 $C_Angel += Random(1, 5, 1)
  98.                                                 $Rem = False
  99.                                         EndIf
  100.                                 Else
  101.                                         $C_Angel -= Random(3, 10, 1)
  102.                                 EndIf
  103.                                 ExitLoop
  104.                         EndIf
  105.                         If $MainY - $H2 - 60 + $y >= $MainY - 50 Then ExitLoop
  106.                         PixelSearch($MainX - 75 - $x, $MainY - $H2 - 60 + $y, $MainX - 75 - $x + 25, $MainY - $H2 - 60 + $y + 25, 0x00FF00)
  107.                         If Not @error Then
  108.                                 If $MainX - 75 - $x < $MainX / 2 Then
  109.                                         $C_Power += Random(1, 10, 1)
  110.                                 Else
  111.                                         If ($y * (-1)) < $ymax Then
  112.                                                 $C_Power += Random(10, 20, 1)
  113.                                                 $C_Angel -= Random(1, 5, 1)
  114.                                                 $Rem = True
  115.                                         Else
  116.                                                 $C_Angel += Random(3, 10, 1)
  117.                                         EndIf
  118.                                 EndIf
  119.                                 $Gras = True
  120.                         EndIf
  121.                         _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 75 - $x_alt, $MainY - $H2 - 60 + $y_alt, 25, 25, 0, 360, $hBrush_Del)
  122.                         _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 75 - $x, $MainY - $H2 - 60 + $y, 25, 25, 0, 360, $hBrush)
  123.                         $x_alt = $x
  124.                         $y_alt = $y
  125.                         If $Treffer = True Then ExitLoop
  126.                         If $Gras = True Then ExitLoop
  127.                         Sleep(20)
  128.                 Next
  129.                 _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 75 - $x_alt, $MainY - $H2 - 60 + $y_alt, 25, 25, 0, 360, $hBrush_Del)
  130.                 If $Treffer = True Then
  131.                         $hBrush = _GDIPlus_BrushCreateSolid(0xAA000000)
  132.                         _GDIPlus_GraphicsFillPie($hGraphic, 5, $MainY - $H1 - 60, 60, 80, 0, 360, $hBrush)
  133.                         _HitSound()
  134.                         MsgBox(0, "击中了", "太糟糕了,你就这么死了")
  135.                 EndIf
  136.                 ;电脑端
  137.         EndIf

  138. EndFunc   ;==>_Fire

  139. Func _ShotSound()
  140.         Beep(200, 10)
  141.         Beep(100, 10)
  142.         Beep(200, 10)
  143.         Beep(100, 10)
  144. EndFunc   ;==>_ShotSound

  145. Func _HitSound()
  146.         For $i = 200 To 50 Step -20
  147.                 Beep($i, 1)
  148.                 Beep($i * 2, 1)
  149.                 Beep($i, 1)
  150.                 Beep($i * 2, 1)
  151.         Next
  152. EndFunc   ;==>_HitSound

  153. Func _CreateBK($H1, $H2, $H3)
  154.         Local $aPoints[13][2], $W = 3
  155.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF)
  156.         _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, $MainX, $MainY - 60, $hBrush)
  157.         $hPen = _GDIPlus_PenCreate(0xFFFFFF00)
  158.         _GDIPlus_GraphicsDrawLine($hGraphic, $MainX / 2, 10, $MainX / 2 - $Wind * 10, 10, $hPen)
  159.         If $Wind < 0 Then $W = -3
  160.         _GDIPlus_GraphicsDrawLine($hGraphic, $MainX / 2 - $Wind * 10, 10, $MainX / 2 - $Wind * 10 + $W, 7, $hPen)
  161.         _GDIPlus_GraphicsDrawLine($hGraphic, $MainX / 2 - $Wind * 10, 10, $MainX / 2 - $Wind * 10 + $W, 13, $hPen)

  162.         $aPoints[0][0] = 12
  163.         $aPoints[1][0] = -50
  164.         $aPoints[1][1] = $MainY - $H1
  165.         $aPoints[2][0] = 50
  166.         $aPoints[2][1] = $MainY - $H1
  167.         $aPoints[3][0] = 180
  168.         $aPoints[3][1] = $MainY - $H1 - ($H3 - $H1) / 5
  169.         $aPoints[4][0] = $MainX / 2
  170.         $aPoints[4][1] = $MainY - $H3
  171.         $aPoints[5][0] = $MainX - 180
  172.         $aPoints[5][1] = $MainY - $H2 - ($H3 - $H2) / 5
  173.         $aPoints[6][0] = $MainX - 50
  174.         $aPoints[6][1] = $MainY - $H2
  175.         $aPoints[7][0] = $MainX + 50
  176.         $aPoints[7][1] = $MainY - $H2
  177.         $aPoints[8][0] = $MainX + 51
  178.         $aPoints[8][1] = $MainY - $H2 - 1
  179.         $aPoints[9][0] = $MainX + 50
  180.         $aPoints[9][1] = $MainY - 55
  181.         $aPoints[10][0] = $MainX / 2
  182.         $aPoints[10][1] = $MainY - 55
  183.         $aPoints[11][0] = -50
  184.         $aPoints[11][1] = $MainY - 55
  185.         $aPoints[12][0] = -51
  186.         $aPoints[12][1] = $MainY - $H1 - 1
  187.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF00FF00)
  188.         _GDIPlus_GraphicsFillClosedCurve($hGraphic, $aPoints, $hBrush)

  189.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF887766)
  190.         _GDIPlus_GraphicsFillPie($hGraphic, 11, $MainY - $H1 - 30, 28, 28, 0, 360, $hBrush)
  191.         $aPoints[0][0] = 4
  192.         $aPoints[1][0] = 15
  193.         $aPoints[1][1] = $MainY - $H1 - 25
  194.         $aPoints[2][0] = 35
  195.         $aPoints[2][1] = $MainY - $H1 - 45
  196.         $aPoints[3][0] = 55
  197.         $aPoints[3][1] = $MainY - $H1 - 25
  198.         $aPoints[4][0] = 35
  199.         $aPoints[4][1] = $MainY - $H1 - 5
  200.         _GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $hBrush)
  201.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF443322)
  202.         _GDIPlus_GraphicsFillPie($hGraphic, 15, $MainY - $H1 - 20, 28, 28, 0, 360, $hBrush)

  203.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF887766)
  204.         _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 40, $MainY - $H2 - 30, 28, 28, 0, 360, $hBrush)
  205.         $aPoints[0][0] = 4
  206.         $aPoints[1][0] = $MainX - 15
  207.         $aPoints[1][1] = $MainY - $H2 - 25
  208.         $aPoints[2][0] = $MainX - 35
  209.         $aPoints[2][1] = $MainY - $H2 - 45
  210.         $aPoints[3][0] = $MainX - 55
  211.         $aPoints[3][1] = $MainY - $H2 - 25
  212.         $aPoints[4][0] = $MainX - 35
  213.         $aPoints[4][1] = $MainY - $H2 - 5
  214.         _GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $hBrush)
  215.         $hBrush = _GDIPlus_BrushCreateSolid(0xFF443322)
  216.         _GDIPlus_GraphicsFillPie($hGraphic, $MainX - 43, $MainY - $H2 - 20, 28, 28, 0, 360, $hBrush)
  217. EndFunc   ;==>_CreateBK

  218. Func _SetValues()
  219.         $H1 = Random(65, $MainY - 180, 1)
  220.         $H2 = Random(65, $MainY - 180, 1)
  221.         $H3 = Random(120, $MainY - 50, 1)
  222.         $C_Angel = Round((($H3 - $H2) * 100) / 500 + Random(-5, 5, 1), 0)
  223.         If $C_Angel < 40 Then $C_Angel = 40
  224.         If $C_Angel > 80 Then $C_Angel = 80
  225.         $Wind = Random(-20, 20, 1)
  226.         $C_Power = 40 - $Wind + $C_Angel + Random(-5, 5, 1)
  227. EndFunc   ;==>_SetValues

  228. Func _Redraw()
  229.         _CreateBK($H1, $H2, $H3)
  230. EndFunc   ;==>_Redraw


  231. ;~ Func _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints, $hBrush = 0)
  232. ;~         Local $iI, $iCount, $pPoints, $tPoints, $aResult, $tmpError, $tmpExError

  233. ;~         $iCount = $aPoints[0][0]
  234. ;~         $tPoints = DllStructCreate("int[" & $iCount * 2 & "]")
  235. ;~         $pPoints = DllStructGetPtr($tPoints)
  236. ;~         For $iI = 1 To $iCount
  237. ;~                 DllStructSetData($tPoints, 1, $aPoints[$iI][0], (($iI - 1) * 2) + 1)
  238. ;~                 DllStructSetData($tPoints, 1, $aPoints[$iI][1], (($iI - 1) * 2) + 2)
  239. ;~         Next
  240. ;~         _GDIPlus_BrushDefCreate($hBrush)
  241. ;~         $aResult = DllCall($ghGDIPDll, "int", "GdipFillPolygon2I", "hwnd", $hGraphics, "hwnd", $hBrush, "ptr", $pPoints, "int", $iCount)
  242. ;~         $tmpError = @error
  243. ;~         $tmpExError = @extended
  244. ;~         _GDIPlus_BrushDefDispose()
  245. ;~         If $tmpError Then Return SetError($tmpError, $tmpExError, False)
  246. ;~         Return SetError($aResult[0], 0, $aResult[0] = 0)
  247. ;~ EndFunc   ;==>_GDIPlus_GraphicsFillPolygon

复制代码
无标题.jpg

炮击游戏.au3 (9.17 KB, 下载次数: 2)
调整角度,火力,开始打炮。

炮击游戏.au3

9.17 KB, 下载次数: 1, 下载积分: 金币 -3 个

评分

参与人数 1金币 +12 牛人值 +3 收起 理由
深蓝 + 12 + 3 情操高尚,技术过人!

查看全部评分

很高心认识你
回复

使用道具 举报

188

主题

6044

帖子

6692

积分

管理员

Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22

终身成就奖特殊贡献奖勤劳登录

发表于 2018-10-16 10:46:41 | 显示全部楼层
这么厉害,AU3都能写游戏了。
深蓝原创软件 网管软件官方站 www.sLsup.com 接受软件定制与深蓝(Thinking)原创软件的OEM,VIP定制。
大道致简,学以致用
回复 支持 反对

使用道具 举报

991

主题

1万

帖子

1万

积分

超级版主

Rank: 21Rank: 21Rank: 21Rank: 21Rank: 21Rank: 21

终身成就奖

发表于 2018-10-16 19:43:05 | 显示全部楼层
不要问是内裤,还是外裤,内外都是酷!
回复 支持 反对

使用道具 举报

3249

主题

3万

帖子

4万

积分

超级版主

Rank: 21Rank: 21Rank: 21Rank: 21Rank: 21Rank: 21

终身成就奖

发表于 2018-10-16 21:21:52 | 显示全部楼层
QQ截图20181016212105.jpg

深蓝 Thinking软件专题站 www.sLsup.com  —— 接受软件定制与深蓝(Thinking)原创软件的OEM,VIP定制。

大道致简,学以致用。 欲收获,先付出。
回复 支持 反对

使用道具 举报

29

主题

166

帖子

176

积分

青出于蓝(04级)

Rank: 4

发表于 2018-10-17 23:42:06 | 显示全部楼层
AU3也能写游戏这么强大吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联盟首页|软件下载|联系我们|手机版|小黑屋|纯文字版|网管联盟 ( 粤ICP备17103197号-2 )

GMT+8, 2018-11-19 19:07 , Processed in 0.192675 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表