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

测试 至此我不在孤单前行

5
回复
1940
查看
[ 复制链接 ]
  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    QQ
    <

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

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

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


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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

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


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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    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 }
    复制代码


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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    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. }
    复制代码

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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    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.     }
    复制代码


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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    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!

    本版积分规则