找回密码
 注册SCIFIFANS!
首页 › scififans › 原生之初 ›测试 至此我不在孤单前行

测试 至此我不在孤单前行

5
回复
2906
查看
[ 复制链接 ]

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ

用邮箱/用户名来登录sci-fifans!

您需要 登录 才可以下载或查看,没有账号?注册SCIFIFANS!

x
至此 我不再独自前行.mp3 (9.61 MB, 下载次数: 372)


以最初的声音,追寻未来的梦

使用道具 举报

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ
  1. object Application {
  2.     private val logger = LoggerFactory.getLogger(this.javaClass)
  3.     @JvmStatic
  4.     fun main(args: Array<String>): Unit = runBlocking {
复制代码


以最初的声音,追寻未来的梦

使用道具 举报

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ
  1. 1 #include <windows.h>
  2.   2 #include <mmsystem.h>
  3.   3 #include <stdio.h>
  4.   4
  5.   5 #pragma comment(lib, "winmm.lib")
  6.   6
  7.   7
  8.   8 #define DATAFILE "BADAPPLE.txt"
  9.   9
  10. 10 #define FRAME_WIDTH        80
  11. 11 #define FRAME_HEIGHT    32
  12. 12
  13. 13 #define DATA_TOKEN_SIZE    ( 5 + 1 )    //    $0000\n
  14. 14 #define DATA_PITCH_SIZE    ( FRAME_WIDTH + 1 )        // ###...\n
  15. 15 #define DATA_FRAME_SIZE    ( DATA_TOKEN_SIZE + ( DATA_PITCH_SIZE * FRAME_HEIGHT ) )
  16. 16
  17. 17 #define FRAME_COUNT    3271
  18. 18
  19. 19 #define VIDEO_TIME    218000.0f    // 3:38 (218000ms)
  20. 20
  21. 21
  22. 22 void main(void)
  23. 23 {
  24. 24     HANDLE hOutput;
  25. 25
  26. 26     hOutput = GetStdHandle( STD_OUTPUT_HANDLE );
  27. 27
  28. 28     CONSOLE_CURSOR_INFO coc = { 1, FALSE };
  29. 29     COORD co = { FRAME_WIDTH, FRAME_HEIGHT };
  30. 30     SMALL_RECT rc = { 0, 0, FRAME_WIDTH - 1, FRAME_HEIGHT - 1 };
  31. 31
  32. 32     SetConsoleCursorInfo( hOutput, &coc );
  33. 33     SetConsoleScreenBufferSize( hOutput, co );
  34. 34     SetConsoleWindowInfo( hOutput, TRUE, &rc );
  35. 35
  36. 36     SetConsoleTitle( "Bad Apple By Crsky @2016" );
  37. 37
  38. 38     FILE    *fp;
  39. 39     int        size;
  40. 40     char    *buf;
  41. 41     char    *cur;
  42. 42     int        start;
  43. 43
  44. 44     buf = NULL;
  45. 45
  46. 46     fp = fopen( DATAFILE, "rb" );
  47. 47
  48. 48     if ( !fp )
  49. 49     {
  50. 50         printf( "%s not found.\n", DATAFILE );
  51. 51         goto err;
  52. 52     }
  53. 53
  54. 54     size = DATA_FRAME_SIZE * FRAME_COUNT;
  55. 55
  56. 56     buf = new char[ size ];
  57. 57
  58. 58     if ( fread( buf, size - 1, 1, fp ) != 1 )
  59. 59     {
  60. 60         printf( "Failed to read in data file.\n" );
  61. 61         goto err;
  62. 62     }
  63. 63
  64. 64     buf[ size - 1 ] = '\0';
  65. 65
  66. 66     fclose( fp );
  67. 67
  68. 68     mciSendString( "open BADAPPLE.wma alias BGM", NULL, 0, NULL );
  69. 69     mciSendString( "play BGM", NULL, 0, NULL );
  70. 70
  71. 71     start = GetTickCount();
  72. 72
  73. 73     while ( 1 )
  74. 74     {
  75. 75         int        time;
  76. 76         float    percen;
  77. 77         int        frame;
  78. 78         COORD    xy = { 0, 0 };
  79. 79         DWORD    written;
  80. 80
  81. 81         if ( GetKeyState( VK_SPACE ) )
  82. 82         {
  83. 83             printf( "Stop play.\n" );
  84. 84             break;
  85. 85         }
  86. 86
  87. 87         time = GetTickCount();
  88. 88         percen = ( time - start ) / VIDEO_TIME;
  89. 89
  90. 90         if ( percen > 1 )
  91. 91         {
  92. 92             printf( "End of play.\n" );
  93. 93             break;
  94. 94         }
  95. 95
  96. 96         frame = percen * FRAME_COUNT;
  97. 97         cur = &buf[ ( DATA_FRAME_SIZE * frame ) + DATA_TOKEN_SIZE ];
  98. 98
  99. 99         for ( ; xy.Y < FRAME_HEIGHT; xy.Y++, cur += DATA_PITCH_SIZE )
  100. 100             WriteConsoleOutputCharacter( hOutput, cur, DATA_PITCH_SIZE - 1, xy, &written );
  101. 101
  102. 102         Sleep( 60 );
  103. 103     }
  104. 104
  105. 105     mciSendString( "stop", NULL, 0, NULL );
  106. 106     mciSendString( "close", NULL, 0, NULL );
  107. 107
  108. 108 err:
  109. 109     if ( buf )
  110. 110         delete[] buf;
  111. 111
  112. 112     Sleep( 500 );
  113. 113 }
复制代码


以最初的声音,追寻未来的梦

使用道具 举报

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ
  1. $ gradle init
  2. Select type of project to generate:
  3.   1: basic
  4.   2: application
  5.   3: library
  6.   4: Gradle plugin
  7. Enter selection (default: basic) [1..4] 2
  8. Select implementation language:
  9.   1: C++
  10.   2: Groovy
  11.   3: Java
  12.   4: Kotlin
  13.   5: Scala
  14.   6: Swift
  15. Enter selection (default: Java) [1..6] 4
  16. Select build script DSL:
  17.   1: Groovy
  18.   2: Kotlin
  19. Enter selection (default: Groovy) [1..2] 2
  20. Select test framework:
  21.   1: JUnit 4
  22.   2: TestNG
  23.   3: Spock
  24.   4: JUnit Jupiter
  25. Enter selection (default: JUnit 4) [1..4]
  26. Project name (default: demo): 随你
  27. Source package (default: demo): me.bot
  28. BUILD SUCCESSFUL
  29. 2 actionable tasks: 2 executed


  30. 打开自己喜欢的编辑器,当然,开发 Java , IDEA 天下第一!
  31. 编辑 build.gradle.kts

  32. import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile
  33. plugins {
  34.     application
  35.     kotlin("jvm") version "1.7.20"
  36.     kotlin("plugin.serialization") version "1.7.20"
  37.     id("com.github.johnrengelman.shadow") version "7.1.2"
  38. }
  39. group = "robot"
  40. version = "0.1.0"
  41. repositories {
  42.     mavenCentral()
  43. }
  44. tasks.withType(KotlinJvmCompile::class.java) {
  45.     kotlinOptions.jvmTarget = "1.8"
  46. }
  47. dependencies {
  48.     // Mirai 库
  49.     api("net.mamoe:mirai-core-api:2.12.3")
  50.     runtimeOnly("net.mamoe:mirai-core:2.12.3")
  51.     // 日志库
  52.     implementation("org.slf4j:slf4j-log4j12:2.0.3")
  53.     // Json 序列化
  54.     implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
  55. }
  56. tasks.jar {
  57.     manifest {
  58.         attributes(
  59.             "Main-Class" to "me.bot.Application",
  60.             "Implementation-Title" to project.name,
  61.             "Implementation-Version" to project.version
  62.         )
  63.     }
  64. }
复制代码

以最初的声音,追寻未来的梦

使用道具 举报

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ
  1. object Application {
  2.     private val logger = LoggerFactory.getLogger(this.javaClass)
  3.     @JvmStatic
  4.     fun main(args: Array<String>): Unit = runBlocking {
  5.         // 配置日志,为了不报错,可以不搞
  6.         logger.asMiraiLogger()

  7.         // 账号、密码
  8.         val bot = BotFactory.newBot(100001L, "MaHuaTengSiMa") {
  9.             // 设备消息,以文本形式自动生成 `device.json`
  10.             fileBasedDeviceInfo()
  11.             // 协议,我这里使用的是 安卓平板 协议
  12.             protocol = BotConfiguration.MiraiProtocol.ANDROID_PAD
  13.         }.alsoLogin()
  14.     }
  15. }
复制代码
  1. import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile
  2. plugins {
  3.     application
  4.     kotlin("jvm") version "1.7.20"
  5.     kotlin("plugin.serialization") version "1.7.20"
  6.     id("com.github.johnrengelman.shadow") version "7.1.2"
  7. }
  8. group = "robot"
  9. version = "0.1.0"
  10. repositories {
  11.     mavenCentral()
  12. }
  13. tasks.withType(KotlinJvmCompile::class.java) {
  14.     kotlinOptions.jvmTarget = "1.8"
  15. }
  16. dependencies {
  17.     // Mirai 库
  18.     api("net.mamoe:mirai-core-api:2.12.3")
  19.     runtimeOnly("net.mamoe:mirai-core:2.12.3")
  20.     // 日志库
  21.     implementation("org.slf4j:slf4j-log4j12:2.0.3")
  22.     // Json 序列化
  23.     implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
  24. }
  25. tasks.jar {
  26.     manifest {
  27.         attributes(
  28.             "Main-Class" to "me.bot.Application",
  29.             "Implementation-Title" to project.name,
  30.             "Implementation-Version" to project.version
  31.         )
  32.     }
复制代码


以最初的声音,追寻未来的梦

使用道具 举报

19

主题

75

回帖

2223

积分

Judgement

世界第一公主殿下

积分
2223
QQ

  1. 先发个图吧
  2. 这一楼我们实现机器人的登录和发消息
  3. 要启动QQ机器人,当然需要一个QQ号,然后登录就一句话
  4. object Application {
  5.     private val logger = LoggerFactory.getLogger(this.javaClass)
  6.     @JvmStatic
  7.     fun main(args: Array<String>): Unit = runBlocking {
  8.         // 配置日志,为了不报错,可以不搞
  9.         logger.asMiraiLogger()

  10.         // 账号、密码
  11.         val bot = BotFactory.newBot(100001L, "MaHuaTengSiMa") {
  12.             // 设备消息,以文本形式自动生成 `device.json`
  13.             fileBasedDeviceInfo()
  14.             // 协议,我这里使用的是 安卓平板 协议
  15.             protocol = BotConfiguration.MiraiProtocol.ANDROID_PAD
  16.         }.alsoLogin()
  17.     }
  18. }
复制代码


以最初的声音,追寻未来的梦

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 注册SCIFIFANS!

本版积分规则